Kaynağa Gözat

Do not use additional bytes buffer for faketls

tags/v2.1.11^2^2
9seconds 2 ay önce
ebeveyn
işleme
908842063a

+ 9
- 10
mtglib/internal/faketls/conn.go Dosyayı Görüntüle

@@ -47,10 +47,7 @@ func (c *Conn) Write(p []byte) (int, error) {
47 47
 	rec.Type = record.TypeApplicationData
48 48
 	rec.Version = record.Version12
49 49
 
50
-	sendBuffer := acquireBytesBuffer()
51
-	defer releaseBytesBuffer(sendBuffer)
52
-
53
-	lenP := len(p)
50
+	written := 0
54 51
 
55 52
 	for len(p) > 0 {
56 53
 		chunkSize := rand.IntN(record.TLSMaxRecordSize)
@@ -60,14 +57,16 @@ func (c *Conn) Write(p []byte) (int, error) {
60 57
 
61 58
 		rec.Payload.Reset()
62 59
 		rec.Payload.Write(p[:chunkSize])
63
-		rec.Dump(sendBuffer) //nolint: errcheck
64 60
 
65
-		p = p[chunkSize:]
66
-	}
61
+		err := rec.Dump(c.Conn)
62
+		written += chunkSize
67 63
 
68
-	if _, err := c.Conn.Write(sendBuffer.Bytes()); err != nil {
69
-		return 0, err //nolint: wrapcheck
64
+		if err != nil {
65
+			return written, err
66
+		}
67
+
68
+		p = p[chunkSize:]
70 69
 	}
71 70
 
72
-	return lenP, nil
71
+	return written, nil
73 72
 }

+ 0
- 21
mtglib/internal/faketls/pools.go Dosyayı Görüntüle

@@ -1,21 +0,0 @@
1
-package faketls
2
-
3
-import (
4
-	"bytes"
5
-	"sync"
6
-)
7
-
8
-var bytesBufferPool = sync.Pool{
9
-	New: func() any {
10
-		return &bytes.Buffer{}
11
-	},
12
-}
13
-
14
-func acquireBytesBuffer() *bytes.Buffer {
15
-	return bytesBufferPool.Get().(*bytes.Buffer) //nolint: forcetypeassert
16
-}
17
-
18
-func releaseBytesBuffer(b *bytes.Buffer) {
19
-	b.Reset()
20
-	bytesBufferPool.Put(b)
21
-}

+ 3
- 4
mtglib/internal/faketls/welcome.go Dosyayı Görüntüle

@@ -1,6 +1,7 @@
1 1
 package faketls
2 2
 
3 3
 import (
4
+	"bytes"
4 5
 	"crypto/hmac"
5 6
 	"crypto/rand"
6 7
 	"crypto/sha256"
@@ -13,8 +14,7 @@ import (
13 14
 )
14 15
 
15 16
 func SendWelcomePacket(writer io.Writer, secret []byte, clientHello ClientHello) error {
16
-	buf := acquireBytesBuffer()
17
-	defer releaseBytesBuffer(buf)
17
+	buf := &bytes.Buffer{}
18 18
 
19 19
 	rec := record.AcquireRecord()
20 20
 	defer record.ReleaseRecord(rec)
@@ -58,8 +58,7 @@ func SendWelcomePacket(writer io.Writer, secret []byte, clientHello ClientHello)
58 58
 }
59 59
 
60 60
 func generateServerHello(writer io.Writer, clientHello ClientHello) {
61
-	bodyBuf := acquireBytesBuffer()
62
-	defer releaseBytesBuffer(bodyBuf)
61
+	bodyBuf := &bytes.Buffer{}
63 62
 
64 63
 	sliceBuf := [2]byte{}
65 64
 	digest := [RandomLen]byte{}

Loading…
İptal
Kaydet