From d85d0b3f3133510212c4945a6dbc8cb21454f34f Mon Sep 17 00:00:00 2001 From: Garet Halliday <me@garet.holiday> Date: Wed, 11 Oct 2023 18:17:59 -0500 Subject: [PATCH] buffer to buffer copy --- lib/fed/packet.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/fed/packet.go b/lib/fed/packet.go index f1aeae13..f521436f 100644 --- a/lib/fed/packet.go +++ b/lib/fed/packet.go @@ -1,5 +1,7 @@ package fed +import "io" + type Packet interface { Type() Type Length() int @@ -26,12 +28,19 @@ func (T PendingPacket) Length() int { } func (T PendingPacket) WriteTo(encoder *Encoder) error { - // TODO(garet) this should be better - b, err := T.Decoder.Remaining() - if err != nil { - return err + count := T.Decoder.len - T.Decoder.pos + limited := io.LimitedReader{ + R: &T.Decoder.Reader, + N: int64(count), + } + for limited.N > 0 { + if _, err := encoder.Writer.ReadFrom(&limited); err != nil { + return err + } } - return encoder.Bytes(b) + T.Decoder.pos += count + encoder.pos += count + return nil } var _ Packet = PendingPacket{} -- GitLab