mirror of
https://github.com/v2ray/v2ray-core.git
synced 2026-11-01 08:17:25 +00:00
Use []byte in pool instead of buffer
This commit is contained in:
@@ -91,14 +91,15 @@ func (handler *VMessInboundHandler) HandleConnection(connection *net.TCPConn) er
|
||||
}
|
||||
|
||||
// Optimize for small response packet
|
||||
buffer := make([]byte, 0, 4*1024)
|
||||
buffer = append(buffer, request.ResponseHeader...)
|
||||
buffer := alloc.NewBuffer()
|
||||
buffer.Clear()
|
||||
buffer.Append(request.ResponseHeader)
|
||||
|
||||
if data, open := <-output; open {
|
||||
buffer = append(buffer, data.Value...)
|
||||
data = nil
|
||||
responseWriter.Write(buffer)
|
||||
buffer = nil
|
||||
buffer.Append(data.Value)
|
||||
data.Release()
|
||||
responseWriter.Write(buffer.Value)
|
||||
buffer.Release()
|
||||
go handleOutput(request, responseWriter, output, &writeFinish)
|
||||
writeFinish.Lock()
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ func (handler *VMessInboundHandler) AcceptPackets(conn *net.UDPConn) {
|
||||
nBytes, err = cryptReader.Read(data.Value)
|
||||
if err != nil {
|
||||
log.Warning("VMessIn: Unable to decrypt data: %v", err)
|
||||
data.Release()
|
||||
continue
|
||||
}
|
||||
data.Slice(0, nBytes)
|
||||
@@ -91,7 +92,6 @@ func (handler *VMessInboundHandler) handlePacket(conn *net.UDPConn, request *pro
|
||||
hasData = true
|
||||
responseWriter.Write(data.Value)
|
||||
data.Release()
|
||||
data = nil
|
||||
}
|
||||
|
||||
if hasData {
|
||||
|
||||
@@ -150,11 +150,9 @@ func handleRequest(conn net.Conn, request *protocol.VMessRequest, firstPacket v2
|
||||
encryptRequestWriter.Crypt(firstChunk.Value)
|
||||
requestBytes = append(requestBytes, firstChunk.Value...)
|
||||
firstChunk.Release()
|
||||
firstChunk = nil
|
||||
|
||||
_, err = conn.Write(requestBytes)
|
||||
buffer.Release()
|
||||
buffer = nil
|
||||
if err != nil {
|
||||
log.Error("VMessOut: Failed to write VMess request: %v", err)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user