mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-02 03:38:42 -07:00
Fix INFO_ARG parsing
In split buffer conditions, a buffer is used to accumulate bytes. After processing, this buffer needs to be reset. Resolves #270
This commit is contained in:
@@ -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]
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user