Procházet zdrojové kódy

Do not use additional bytes buffer for faketls

tags/v2.1.11^2^2
9seconds před 2 měsíci
rodič
revize
908842063a

+ 9
- 10
mtglib/internal/faketls/conn.go Zobrazit soubor

47
 	rec.Type = record.TypeApplicationData
47
 	rec.Type = record.TypeApplicationData
48
 	rec.Version = record.Version12
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
 	for len(p) > 0 {
52
 	for len(p) > 0 {
56
 		chunkSize := rand.IntN(record.TLSMaxRecordSize)
53
 		chunkSize := rand.IntN(record.TLSMaxRecordSize)
60
 
57
 
61
 		rec.Payload.Reset()
58
 		rec.Payload.Reset()
62
 		rec.Payload.Write(p[:chunkSize])
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 Zobrazit soubor

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 Zobrazit soubor

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

Načítá se…
Zrušit
Uložit