mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 23:34:02 +03:00
Do not use additional bytes buffer for faketls
This commit is contained in:
@@ -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
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
|
||||||
}
|
|
||||||
@@ -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{}
|
||||||
|
|||||||
Reference in New Issue
Block a user