]> Sergey Matveev's repositories - btrtrc.git/blobdiff - peer_protocol/decoder.go
Remove an allocation reading message length
[btrtrc.git] / peer_protocol / decoder.go
index 870716c50e1098d6a2455325fe526e3e07b5ee4d..decc8e8ffa5597352f3553f3e3aa17788ddd9783 100644 (file)
@@ -20,12 +20,9 @@ type Decoder struct {
 // io.EOF is returned if the source terminates cleanly on a message boundary.
 func (d *Decoder) Decode(msg *Message) (err error) {
        var length Integer
-       err = binary.Read(d.R, binary.BigEndian, &length)
+       err = length.ReadFrom(d.R)
        if err != nil {
-               if err != io.EOF {
-                       err = fmt.Errorf("error reading message length: %w", err)
-               }
-               return
+               return fmt.Errorf("reading message length: %w", err)
        }
        if length > d.MaxLength {
                return errors.New("message too long")