Skip to content

Commit 63781b3

Browse files
committed
chore: decrease memory using
1 parent c6e596f commit 63781b3

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

transport/vless/encryption/common.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,14 @@ type CommonConn struct {
2323
PreWrite []byte
2424
GCM *GCM
2525
PeerPadding []byte
26-
PeerInBytes []byte
26+
rawInput bytes.Buffer // PeerInBytes
2727
PeerGCM *GCM
2828
input bytes.Reader // PeerCache
2929
}
3030

3131
func NewCommonConn(conn net.Conn) *CommonConn {
3232
return &CommonConn{
33-
Conn: conn,
34-
PeerInBytes: make([]byte, 5+17000), // no need to use sync.Pool, because we are always reading
33+
Conn: conn,
3534
}
3635
}
3736

@@ -94,11 +93,11 @@ func (c *CommonConn) Read(b []byte) (int, error) {
9493
if c.input.Len() > 0 {
9594
return c.input.Read(b)
9695
}
97-
peerHeader := c.PeerInBytes[:5]
96+
peerHeader := make([]byte, 5)
9897
if _, err := io.ReadFull(c.Conn, peerHeader); err != nil {
9998
return 0, err
10099
}
101-
l, err := DecodeHeader(c.PeerInBytes[:5]) // l: 17~17000
100+
l, err := DecodeHeader(peerHeader) // l: 17~17000
102101
if err != nil {
103102
if c.Client != nil && errors.Is(err, ErrInvalidHeader) { // client's 0-RTT
104103
c.Client.RWLock.Lock()
@@ -111,7 +110,8 @@ func (c *CommonConn) Read(b []byte) (int, error) {
111110
return 0, err
112111
}
113112
c.Client = nil
114-
peerData := c.PeerInBytes[5 : 5+l]
113+
c.rawInput.Grow(l)
114+
peerData := c.rawInput.Bytes()[:l]
115115
if _, err := io.ReadFull(c.Conn, peerData); err != nil {
116116
return 0, err
117117
}
@@ -121,7 +121,7 @@ func (c *CommonConn) Read(b []byte) (int, error) {
121121
}
122122
var newGCM *GCM
123123
if bytes.Equal(c.PeerGCM.Nonce[:], MaxNonce) {
124-
newGCM = NewGCM(c.PeerInBytes[:5+l], c.UnitedKey)
124+
newGCM = NewGCM(append(peerHeader, peerData...), c.UnitedKey)
125125
}
126126
_, err = c.PeerGCM.Open(dst[:0], nil, peerData, peerHeader)
127127
if newGCM != nil {

0 commit comments

Comments
 (0)