mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 16:01:55 +03:00
Cleanup pools from wrappes
This commit is contained in:
@@ -42,8 +42,7 @@ type wrapperMtprotoFrame struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (w *wrapperMtprotoFrame) Read() (conntypes.Packet, error) { // nolint: funlen
|
func (w *wrapperMtprotoFrame) Read() (conntypes.Packet, error) { // nolint: funlen
|
||||||
buf := acquireMtprotoFrameBytesBuffer()
|
buf := &bytes.Buffer{}
|
||||||
defer releaseMtprotoFrameBytesBuffer(buf)
|
|
||||||
|
|
||||||
sum := crc32.NewIEEE()
|
sum := crc32.NewIEEE()
|
||||||
writer := io.MultiWriter(buf, sum)
|
writer := io.MultiWriter(buf, sum)
|
||||||
@@ -114,8 +113,7 @@ func (w *wrapperMtprotoFrame) Write(p conntypes.Packet) error {
|
|||||||
messageLength := 4 + 4 + len(p) + 4
|
messageLength := 4 + 4 + len(p) + 4
|
||||||
paddingLength := (aes.BlockSize - messageLength%aes.BlockSize) % aes.BlockSize
|
paddingLength := (aes.BlockSize - messageLength%aes.BlockSize) % aes.BlockSize
|
||||||
|
|
||||||
buf := acquireMtprotoFrameBytesBuffer()
|
buf := &bytes.Buffer{}
|
||||||
defer releaseMtprotoFrameBytesBuffer(buf)
|
|
||||||
|
|
||||||
binary.Write(buf, binary.LittleEndian, uint32(messageLength)) // nolint: errcheck
|
binary.Write(buf, binary.LittleEndian, uint32(messageLength)) // nolint: errcheck
|
||||||
binary.Write(buf, binary.LittleEndian, w.writeSeqNo) // nolint: errcheck
|
binary.Write(buf, binary.LittleEndian, w.writeSeqNo) // nolint: errcheck
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
package packet
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
poolMtprotoFrameBytesBuffer = sync.Pool{
|
|
||||||
New: func() interface{} {
|
|
||||||
return &bytes.Buffer{}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func acquireMtprotoFrameBytesBuffer() *bytes.Buffer {
|
|
||||||
return poolMtprotoFrameBytesBuffer.Get().(*bytes.Buffer)
|
|
||||||
}
|
|
||||||
|
|
||||||
func releaseMtprotoFrameBytesBuffer(buf *bytes.Buffer) {
|
|
||||||
buf.Reset()
|
|
||||||
poolMtprotoFrameBytesBuffer.Put(buf)
|
|
||||||
}
|
|
||||||
@@ -88,9 +88,7 @@ func (w *wrapperClientAbridged) Write(packet conntypes.Packet, acks *conntypes.C
|
|||||||
return nil
|
return nil
|
||||||
case packetLength < clientAbridgedLargePacketLength:
|
case packetLength < clientAbridgedLargePacketLength:
|
||||||
length24 := utils.ToUint24(uint32(packetLength))
|
length24 := utils.ToUint24(uint32(packetLength))
|
||||||
|
buf := bytes.Buffer{}
|
||||||
buf := acquireClientBytesBuffer()
|
|
||||||
defer releaseClientBytesBuffer(buf)
|
|
||||||
|
|
||||||
buf.WriteByte(byte(clientAbridgedSmallPacketLength))
|
buf.WriteByte(byte(clientAbridgedSmallPacketLength))
|
||||||
buf.Write(length24[:])
|
buf.Write(length24[:])
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package packetack
|
package packetack
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
@@ -34,10 +35,9 @@ func (w *wrapperClientIntermediateSecure) Write(packet conntypes.Packet, acks *c
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
buf := acquireClientBytesBuffer()
|
buf := &bytes.Buffer{}
|
||||||
defer releaseClientBytesBuffer(buf)
|
|
||||||
|
|
||||||
paddingLength := rand.Intn(4)
|
paddingLength := rand.Intn(4)
|
||||||
|
|
||||||
buf.Grow(4 + len(packet) + paddingLength)
|
buf.Grow(4 + len(packet) + paddingLength)
|
||||||
|
|
||||||
binary.Write(buf, binary.LittleEndian, uint32(len(packet)+paddingLength)) // nolint: errcheck
|
binary.Write(buf, binary.LittleEndian, uint32(len(packet)+paddingLength)) // nolint: errcheck
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
package packetack
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
poolClientBytesBuffer = sync.Pool{
|
|
||||||
New: func() interface{} {
|
|
||||||
return &bytes.Buffer{}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func acquireClientBytesBuffer() *bytes.Buffer {
|
|
||||||
return poolClientBytesBuffer.Get().(*bytes.Buffer)
|
|
||||||
}
|
|
||||||
|
|
||||||
func releaseClientBytesBuffer(buf *bytes.Buffer) {
|
|
||||||
buf.Reset()
|
|
||||||
poolClientBytesBuffer.Put(buf)
|
|
||||||
}
|
|
||||||
@@ -39,13 +39,11 @@ func (w *wrapperFakeTLS) WriteTimeout(p []byte, timeout time.Duration) (int, err
|
|||||||
|
|
||||||
func (w *wrapperFakeTLS) write(p []byte, writeFunc func([]byte) (int, error)) (int, error) {
|
func (w *wrapperFakeTLS) write(p []byte, writeFunc func([]byte) (int, error)) (int, error) {
|
||||||
sum := 0
|
sum := 0
|
||||||
|
buf := bytes.Buffer{}
|
||||||
buf := acquireBytesBuffer()
|
|
||||||
defer releaseBytesBuffer(buf)
|
|
||||||
|
|
||||||
for _, v := range tlstypes.MakeRecords(p) {
|
for _, v := range tlstypes.MakeRecords(p) {
|
||||||
buf.Reset()
|
buf.Reset()
|
||||||
v.WriteBytes(buf)
|
v.WriteBytes(&buf)
|
||||||
|
|
||||||
_, err := writeFunc(buf.Bytes())
|
_, err := writeFunc(buf.Bytes())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package stream
|
package stream
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"crypto/aes"
|
"crypto/aes"
|
||||||
"crypto/cipher"
|
"crypto/cipher"
|
||||||
"crypto/md5" // nolint: gosec
|
"crypto/md5" // nolint: gosec
|
||||||
@@ -53,8 +54,8 @@ func mtprotoDeriveKeys(purpose mtprotoCipherPurpose,
|
|||||||
resp *rpc.NonceResponse,
|
resp *rpc.NonceResponse,
|
||||||
client, remote *net.TCPAddr,
|
client, remote *net.TCPAddr,
|
||||||
secret []byte) ([]byte, []byte) {
|
secret []byte) ([]byte, []byte) {
|
||||||
message := acquireBytesBuffer()
|
|
||||||
defer releaseBytesBuffer(message)
|
message := bytes.Buffer{}
|
||||||
|
|
||||||
message.Write(resp.Nonce) // nolint: gosec
|
message.Write(resp.Nonce) // nolint: gosec
|
||||||
message.Write(req.Nonce) // nolint: gosec
|
message.Write(req.Nonce) // nolint: gosec
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package stream
|
package stream
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"crypto/cipher"
|
"crypto/cipher"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
@@ -40,8 +41,7 @@ func (w *wrapperObfuscated2) Read(p []byte) (int, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (w *wrapperObfuscated2) WriteTimeout(p []byte, timeout time.Duration) (int, error) {
|
func (w *wrapperObfuscated2) WriteTimeout(p []byte, timeout time.Duration) (int, error) {
|
||||||
buffer := acquireBytesBuffer()
|
buffer := bytes.Buffer{}
|
||||||
defer releaseBytesBuffer(buffer)
|
|
||||||
|
|
||||||
buffer.Write(p)
|
buffer.Write(p)
|
||||||
|
|
||||||
@@ -53,8 +53,7 @@ func (w *wrapperObfuscated2) WriteTimeout(p []byte, timeout time.Duration) (int,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (w *wrapperObfuscated2) Write(p []byte) (int, error) {
|
func (w *wrapperObfuscated2) Write(p []byte) (int, error) {
|
||||||
buffer := acquireBytesBuffer()
|
buffer := bytes.Buffer{}
|
||||||
defer releaseBytesBuffer(buffer)
|
|
||||||
|
|
||||||
buffer.Write(p)
|
buffer.Write(p)
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
package stream
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
poolBytesBuffer = sync.Pool{
|
|
||||||
New: func() interface{} {
|
|
||||||
return &bytes.Buffer{}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func acquireBytesBuffer() *bytes.Buffer {
|
|
||||||
return poolBytesBuffer.Get().(*bytes.Buffer)
|
|
||||||
}
|
|
||||||
|
|
||||||
func releaseBytesBuffer(buf *bytes.Buffer) {
|
|
||||||
buf.Reset()
|
|
||||||
poolBytesBuffer.Put(buf)
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user