From: Matt Joiner Date: Wed, 29 Sep 2021 23:45:50 +0000 (+1000) Subject: Try to avoid allocating buffer X-Git-Tag: v1.32.0~7 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=709ee70b0c96c5c8e6c187aefbaeb1630e10f766;p=btrtrc.git Try to avoid allocating buffer --- diff --git a/peer_protocol/msg.go b/peer_protocol/msg.go index bc53afbb..23710e63 100644 --- a/peer_protocol/msg.go +++ b/peer_protocol/msg.go @@ -58,7 +58,7 @@ func (msg Message) MustMarshalBinary() []byte { } func (msg Message) MarshalBinary() (data []byte, err error) { - buf := &bytes.Buffer{} + var buf bytes.Buffer if !msg.Keepalive { err = buf.WriteByte(byte(msg.Type)) if err != nil { @@ -67,10 +67,10 @@ func (msg Message) MarshalBinary() (data []byte, err error) { switch msg.Type { case Choke, Unchoke, Interested, NotInterested, HaveAll, HaveNone: case Have: - err = binary.Write(buf, binary.BigEndian, msg.Index) + err = binary.Write(&buf, binary.BigEndian, msg.Index) case Request, Cancel, Reject: for _, i := range []Integer{msg.Index, msg.Begin, msg.Length} { - err = binary.Write(buf, binary.BigEndian, i) + err = binary.Write(&buf, binary.BigEndian, i) if err != nil { break } @@ -79,7 +79,7 @@ func (msg Message) MarshalBinary() (data []byte, err error) { _, err = buf.Write(marshalBitfield(msg.Bitfield)) case Piece: for _, i := range []Integer{msg.Index, msg.Begin} { - err = binary.Write(buf, binary.BigEndian, i) + err = binary.Write(&buf, binary.BigEndian, i) if err != nil { return } @@ -98,7 +98,7 @@ func (msg Message) MarshalBinary() (data []byte, err error) { } _, err = buf.Write(msg.ExtendedPayload) case Port: - err = binary.Write(buf, binary.BigEndian, msg.Port) + err = binary.Write(&buf, binary.BigEndian, msg.Port) default: err = fmt.Errorf("unknown message type: %v", msg.Type) }