diff --git a/mtglib/internal/faketls/record/pools.go b/mtglib/internal/faketls/record/pools.go index 50b0fec..16fa81f 100644 --- a/mtglib/internal/faketls/record/pools.go +++ b/mtglib/internal/faketls/record/pools.go @@ -1,22 +1,14 @@ package record import ( - "bytes" "sync" ) -var ( - recordPool = sync.Pool{ - New: func() interface{} { - return &Record{} - }, - } - bytesBufferPool = sync.Pool{ - New: func() interface{} { - return &bytes.Buffer{} - }, - } -) +var recordPool = sync.Pool{ + New: func() interface{} { + return &Record{} + }, +} func AcquireRecord() *Record { return recordPool.Get().(*Record) @@ -26,12 +18,3 @@ func ReleaseRecord(r *Record) { r.Reset() recordPool.Put(r) } - -func acquireBytesBuffer() *bytes.Buffer { - return bytesBufferPool.Get().(*bytes.Buffer) -} - -func releaseBytesBuffer(buf *bytes.Buffer) { - buf.Reset() - bytesBufferPool.Put(buf) -} diff --git a/mtglib/internal/faketls/record/record.go b/mtglib/internal/faketls/record/record.go index bce03b0..2c8b23e 100644 --- a/mtglib/internal/faketls/record/record.go +++ b/mtglib/internal/faketls/record/record.go @@ -61,21 +61,24 @@ func (r *Record) Read(reader io.Reader) error { } func (r *Record) Dump(writer io.Writer) error { - buf := acquireBytesBuffer() - defer releaseBytesBuffer(buf) + buf := [2]byte{byte(r.Type), 0} + if _, err := writer.Write(buf[:1]); err != nil { + return fmt.Errorf("cannot dump record type: %w", err) + } - bufSlice := [2]byte{byte(r.Type), 0} - buf.Write(bufSlice[:1]) + binary.BigEndian.PutUint16(buf[:], uint16(r.Version)) - binary.BigEndian.PutUint16(bufSlice[:], uint16(r.Version)) - buf.Write(bufSlice[:]) + if _, err := writer.Write(buf[:]); err != nil { + return fmt.Errorf("cannot dump version: %w", err) + } - binary.BigEndian.PutUint16(bufSlice[:], uint16(r.Payload.Len())) - buf.Write(bufSlice[:]) + binary.BigEndian.PutUint16(buf[:], uint16(r.Payload.Len())) - buf.Write(r.Payload.Bytes()) + if _, err := writer.Write(buf[:]); err != nil { + return fmt.Errorf("cannot dump payload length: %w", err) + } - if _, err := buf.WriteTo(writer); err != nil { + if _, err := writer.Write(r.Payload.Bytes()); err != nil { return fmt.Errorf("cannot dump record: %w", err) } diff --git a/mtglib/internal/obfuscated2/conn.go b/mtglib/internal/obfuscated2/conn.go index c3a4c05..87221c3 100644 --- a/mtglib/internal/obfuscated2/conn.go +++ b/mtglib/internal/obfuscated2/conn.go @@ -32,7 +32,5 @@ func (c Conn) Write(p []byte) (int, error) { payload := buf.Bytes() c.Encryptor.XORKeyStream(payload, payload) - n, err := buf.WriteTo(c.Conn) - - return int(n), err // nolint: wrapcheck + return c.Conn.Write(payload) }