Use []byte in pool instead of buffer

This commit is contained in:
V2Ray
2015-10-08 17:41:38 +02:00
parent 472cf7f523
commit 3cb1951dfc
8 changed files with 38 additions and 44 deletions
+7 -6
View File
@@ -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()
}
+1 -1
View File
@@ -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 {
-2
View File
@@ -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