Do not use additional bytes buffer for faketls

This commit is contained in:
9seconds
2026-02-23 10:27:01 +01:00
parent e50cee5748
commit 908842063a
3 changed files with 12 additions and 35 deletions
+9 -10
View File
@@ -47,10 +47,7 @@ func (c *Conn) Write(p []byte) (int, error) {
rec.Type = record.TypeApplicationData rec.Type = record.TypeApplicationData
rec.Version = record.Version12 rec.Version = record.Version12
sendBuffer := acquireBytesBuffer() written := 0
defer releaseBytesBuffer(sendBuffer)
lenP := len(p)
for len(p) > 0 { for len(p) > 0 {
chunkSize := rand.IntN(record.TLSMaxRecordSize) chunkSize := rand.IntN(record.TLSMaxRecordSize)
@@ -60,14 +57,16 @@ func (c *Conn) Write(p []byte) (int, error) {
rec.Payload.Reset() rec.Payload.Reset()
rec.Payload.Write(p[:chunkSize]) rec.Payload.Write(p[:chunkSize])
rec.Dump(sendBuffer) //nolint: errcheck
err := rec.Dump(c.Conn)
written += chunkSize
if err != nil {
return written, err
}
p = p[chunkSize:] p = p[chunkSize:]
} }
if _, err := c.Conn.Write(sendBuffer.Bytes()); err != nil { return written, nil
return 0, err //nolint: wrapcheck
}
return lenP, nil
} }
-21
View File
@@ -1,21 +0,0 @@
package faketls
import (
"bytes"
"sync"
)
var bytesBufferPool = sync.Pool{
New: func() any {
return &bytes.Buffer{}
},
}
func acquireBytesBuffer() *bytes.Buffer {
return bytesBufferPool.Get().(*bytes.Buffer) //nolint: forcetypeassert
}
func releaseBytesBuffer(b *bytes.Buffer) {
b.Reset()
bytesBufferPool.Put(b)
}
+3 -4
View File
@@ -1,6 +1,7 @@
package faketls package faketls
import ( import (
"bytes"
"crypto/hmac" "crypto/hmac"
"crypto/rand" "crypto/rand"
"crypto/sha256" "crypto/sha256"
@@ -13,8 +14,7 @@ import (
) )
func SendWelcomePacket(writer io.Writer, secret []byte, clientHello ClientHello) error { func SendWelcomePacket(writer io.Writer, secret []byte, clientHello ClientHello) error {
buf := acquireBytesBuffer() buf := &bytes.Buffer{}
defer releaseBytesBuffer(buf)
rec := record.AcquireRecord() rec := record.AcquireRecord()
defer record.ReleaseRecord(rec) defer record.ReleaseRecord(rec)
@@ -58,8 +58,7 @@ func SendWelcomePacket(writer io.Writer, secret []byte, clientHello ClientHello)
} }
func generateServerHello(writer io.Writer, clientHello ClientHello) { func generateServerHello(writer io.Writer, clientHello ClientHello) {
bodyBuf := acquireBytesBuffer() bodyBuf := &bytes.Buffer{}
defer releaseBytesBuffer(bodyBuf)
sliceBuf := [2]byte{} sliceBuf := [2]byte{}
digest := [RandomLen]byte{} digest := [RandomLen]byte{}