diff --git a/server/parser.go b/server/parser.go index b369fbc7ebd..d61e404ebee 100644 --- a/server/parser.go +++ b/server/parser.go @@ -540,6 +540,7 @@ func (c *client) parse(buf []byte) error { var arg []byte if c.argBuf != nil { arg = c.argBuf + c.argBuf = nil } else { arg = buf[c.as : i-c.drop] } diff --git a/server/split_test.go b/server/split_test.go index cdaa1c50135..243c54b56f8 100644 --- a/server/split_test.go +++ b/server/split_test.go @@ -314,7 +314,7 @@ func TestSplitDanglingArgBuf(t *testing.T) { c.parse(pubop[:22]) c.parse(pubop[22:25]) if c.argBuf == nil { - t.Fatal("Expected a nil argBuf!") + t.Fatal("Expected a non-nil argBuf!") } c.parse(pubop[25:]) if c.argBuf != nil { @@ -337,6 +337,14 @@ func TestSplitDanglingArgBuf(t *testing.T) { if c.argBuf != nil { t.Fatalf("Expected c.argBuf to be nil: %q\n", c.argBuf) } + + // INFO_ARG + infoop := []byte("INFO {\"server_id\":\"id\"}\r\n") + c.parse(infoop[:8]) + c.parse(infoop[8:]) + if c.argBuf != nil { + t.Fatalf("Expected c.argBuf to be nil: %q\n", c.argBuf) + } } func TestSplitMsgArg(t *testing.T) {