Commit bf824e6c authored by Kirill Smelkov's avatar Kirill Smelkov

X go/neo/neonet: Fix thinko in recvPktN

We were retruning packet with tail read for next packet data.
Previously decoding was forgiving, but recent rework along msgpack
support added check that is now failing, e.g.

    === RUN   TestEmptyDB/py/!ssl
    I: runneo.py: /tmp/neo214694750/1 !ssl: started master(s): 127.0.0.1:30621
    127.0.0.1:42266 > 127.0.0.1:30621: .1 RequestIdentification &{CLIENT ?(0)0  1 ø [] []}
    127.0.0.1:42266 < 127.0.0.1:30621: (N: decode header: len(payload) != msgLen) 00 00 00 01 80 01 00 00 00 09 00 f0 00 00 01 e0 00 00 01 00 00 00 00 00 06 00 00 00 58 41 d7 ff 69 82 0a 91 25 00 00 00 03 02 00 00 00 00 e0 00 00 01 02 41 d7 ff 69 82 0a 78 ff 01 00 00 00 09 31 32 37 2e 30 2e 30 2e 31 96 f7 00 00 00 01 02 41 d7 ff 69 81 c6 65 f5 00 00 00 00 09 31 32 37 2e 30 2e 30 2e 31 77 9d f0 00 00 01 02 ff ff ff ff ff ff ff ff 00 00 00 02 00 0a 00 00 00 19 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 01

-> Fix is: pkt.data should be data[:pktLen], not data[:n] since n is how
much we have read at all.
parent 97cbe2b8
...@@ -1296,7 +1296,7 @@ func (nl *NodeLink) recvPktN() (*pktBuf, error) { ...@@ -1296,7 +1296,7 @@ func (nl *NodeLink) recvPktN() (*pktBuf, error) {
} }
// fixup data/pkt // fixup data/pkt
data = data[:n] data = data[:pktLen]
pkt.data = data pkt.data = data
return pkt, nil return pkt, nil
...@@ -1411,7 +1411,7 @@ func pktDecodeHead(e proto.Encoding, pkt *pktBuf) (connID uint32, msgCode uint16 ...@@ -1411,7 +1411,7 @@ func pktDecodeHead(e proto.Encoding, pkt *pktBuf) (connID uint32, msgCode uint16
} }
if err != nil { if err != nil {
err = fmt.Errorf("decode header: %s", err) err = fmt.Errorf("%c: decode header: %s", e, err)
} }
return connID, msgCode, payload, err return connID, msgCode, payload, err
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment