Get rid of unrequired buffering for tls records

This commit is contained in:
9seconds
2021-03-29 18:56:08 +03:00
parent 3cacd74e12
commit 841a4d2227
3 changed files with 19 additions and 35 deletions
+13 -10
View File
@@ -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)
}