mirror of
https://github.com/v2fly/v2ray-core.git
synced 2026-05-17 18:09:09 -04:00
remove release() pattern
This commit is contained in:
@@ -31,7 +31,7 @@ func (v *Handler) Dispatch(destination v2net.Destination, ray ray.OutboundRay) {
|
||||
v.response.WriteTo(ray.OutboundOutput())
|
||||
ray.OutboundOutput().Close()
|
||||
|
||||
ray.OutboundInput().Release()
|
||||
ray.OutboundInput().ForceClose()
|
||||
}
|
||||
|
||||
// Factory is an utility for creating blackhole handlers.
|
||||
|
||||
@@ -172,13 +172,11 @@ func (v *DokodemoDoor) HandleTCPConnection(conn internet.Connection) {
|
||||
defer output.ForceClose()
|
||||
|
||||
reader := v2net.NewTimeOutReader(v.config.Timeout, conn)
|
||||
defer reader.Release()
|
||||
|
||||
requestDone := signal.ExecuteAsync(func() error {
|
||||
defer ray.InboundInput().Close()
|
||||
|
||||
v2reader := buf.NewReader(reader)
|
||||
defer v2reader.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(v2reader, ray.InboundInput()); err != nil {
|
||||
log.Info("Dokodemo: Failed to transport all TCP request: ", err)
|
||||
@@ -192,7 +190,6 @@ func (v *DokodemoDoor) HandleTCPConnection(conn internet.Connection) {
|
||||
defer output.ForceClose()
|
||||
|
||||
v2writer := buf.NewWriter(conn)
|
||||
defer v2writer.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(output, v2writer); err != nil {
|
||||
log.Info("Dokodemo: Failed to transport all TCP response: ", err)
|
||||
|
||||
@@ -99,8 +99,6 @@ func (v *Handler) Dispatch(destination v2net.Destination, ray ray.OutboundRay) {
|
||||
defer input.ForceClose()
|
||||
|
||||
v2writer := buf.NewWriter(conn)
|
||||
defer v2writer.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(input, v2writer); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -121,8 +119,6 @@ func (v *Handler) Dispatch(destination v2net.Destination, ray ray.OutboundRay) {
|
||||
defer output.Close()
|
||||
|
||||
v2reader := buf.NewReader(reader)
|
||||
defer v2reader.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(v2reader, output); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -162,8 +162,6 @@ func (v *Server) handleConnect(request *http.Request, session *proxy.SessionInfo
|
||||
defer ray.InboundInput().Close()
|
||||
|
||||
v2reader := buf.NewReader(reader)
|
||||
defer v2reader.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(v2reader, ray.InboundInput()); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -174,8 +172,6 @@ func (v *Server) handleConnect(request *http.Request, session *proxy.SessionInfo
|
||||
defer ray.InboundOutput().ForceClose()
|
||||
|
||||
v2writer := buf.NewWriter(writer)
|
||||
defer v2writer.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(ray.InboundOutput(), v2writer); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -248,8 +244,6 @@ func (v *Server) handlePlainHTTP(request *http.Request, session *proxy.SessionIn
|
||||
defer input.Close()
|
||||
|
||||
requestWriter := bufio.NewWriter(buf.NewBytesWriter(ray.InboundInput()))
|
||||
defer requestWriter.Release()
|
||||
|
||||
err := request.Write(requestWriter)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -87,11 +87,7 @@ func (v *Client) Dispatch(destination v2net.Destination, ray ray.OutboundRay) {
|
||||
|
||||
if request.Command == protocol.RequestCommandTCP {
|
||||
bufferedWriter := bufio.NewWriter(conn)
|
||||
defer bufferedWriter.Release()
|
||||
|
||||
bodyWriter, err := WriteTCPRequest(request, bufferedWriter)
|
||||
defer bodyWriter.Release()
|
||||
|
||||
if err != nil {
|
||||
log.Info("Shadowsocks|Client: Failed to write request: ", err)
|
||||
return
|
||||
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"crypto/sha1"
|
||||
"io"
|
||||
|
||||
"v2ray.com/core/common"
|
||||
"v2ray.com/core/common/buf"
|
||||
"v2ray.com/core/common/errors"
|
||||
"v2ray.com/core/common/serial"
|
||||
@@ -70,11 +69,6 @@ func NewChunkReader(reader io.Reader, auth *Authenticator) *ChunkReader {
|
||||
}
|
||||
}
|
||||
|
||||
func (v *ChunkReader) Release() {
|
||||
common.Release(v.reader)
|
||||
common.Release(v.auth)
|
||||
}
|
||||
|
||||
func (v *ChunkReader) Read() (*buf.Buffer, error) {
|
||||
buffer := buf.New()
|
||||
if err := buffer.AppendSupplier(buf.ReadFullFrom(v.reader, 2)); err != nil {
|
||||
@@ -124,11 +118,6 @@ func NewChunkWriter(writer io.Writer, auth *Authenticator) *ChunkWriter {
|
||||
}
|
||||
}
|
||||
|
||||
func (v *ChunkWriter) Release() {
|
||||
common.Release(v.writer)
|
||||
common.Release(v.auth)
|
||||
}
|
||||
|
||||
func (v *ChunkWriter) Write(payload *buf.Buffer) error {
|
||||
totalLength := payload.Len()
|
||||
serial.Uint16ToBytes(uint16(totalLength), v.buffer[:0])
|
||||
|
||||
@@ -378,9 +378,6 @@ func (v *UDPReader) Read() (*buf.Buffer, error) {
|
||||
return payload, nil
|
||||
}
|
||||
|
||||
func (v *UDPReader) Release() {
|
||||
}
|
||||
|
||||
type UDPWriter struct {
|
||||
Writer io.Writer
|
||||
Request *protocol.RequestHeader
|
||||
@@ -395,7 +392,3 @@ func (v *UDPWriter) Write(buffer *buf.Buffer) error {
|
||||
payload.Release()
|
||||
return err
|
||||
}
|
||||
|
||||
func (v *UDPWriter) Release() {
|
||||
|
||||
}
|
||||
|
||||
@@ -147,18 +147,13 @@ func (v *Server) handleConnection(conn internet.Connection) {
|
||||
conn.SetReusable(false)
|
||||
|
||||
timedReader := v2net.NewTimeOutReader(16, conn)
|
||||
defer timedReader.Release()
|
||||
|
||||
bufferedReader := bufio.NewReader(timedReader)
|
||||
defer bufferedReader.Release()
|
||||
|
||||
request, bodyReader, err := ReadTCPSession(v.user, bufferedReader)
|
||||
if err != nil {
|
||||
log.Access(conn.RemoteAddr(), "", log.AccessRejected, err)
|
||||
log.Info("Shadowsocks|Server: Failed to create request from: ", conn.RemoteAddr(), ": ", err)
|
||||
return
|
||||
}
|
||||
defer bodyReader.Release()
|
||||
|
||||
bufferedReader.SetBuffered(false)
|
||||
|
||||
@@ -182,14 +177,11 @@ func (v *Server) handleConnection(conn internet.Connection) {
|
||||
defer ray.InboundOutput().ForceClose()
|
||||
|
||||
bufferedWriter := bufio.NewWriter(conn)
|
||||
defer bufferedWriter.Release()
|
||||
|
||||
responseWriter, err := WriteTCPResponse(request, bufferedWriter)
|
||||
if err != nil {
|
||||
log.Warning("Shadowsocks|Server: Failed to write response: ", err)
|
||||
return err
|
||||
}
|
||||
defer responseWriter.Release()
|
||||
|
||||
payload, err := ray.InboundOutput().Read()
|
||||
if err != nil {
|
||||
|
||||
@@ -105,7 +105,6 @@ func (v *Server) handleConnection(connection internet.Connection) {
|
||||
|
||||
timedReader := v2net.NewTimeOutReader(v.config.Timeout, connection)
|
||||
reader := bufio.NewReader(timedReader)
|
||||
defer reader.Release()
|
||||
|
||||
session := &ServerSession{
|
||||
config: v.config,
|
||||
@@ -159,8 +158,6 @@ func (v *Server) transport(reader io.Reader, writer io.Writer, session *proxy.Se
|
||||
defer input.Close()
|
||||
|
||||
v2reader := buf.NewReader(reader)
|
||||
defer v2reader.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(v2reader, input); err != nil {
|
||||
log.Info("Socks|Server: Failed to transport all TCP request: ", err)
|
||||
return err
|
||||
@@ -172,8 +169,6 @@ func (v *Server) transport(reader io.Reader, writer io.Writer, session *proxy.Se
|
||||
defer output.ForceClose()
|
||||
|
||||
v2writer := buf.NewWriter(writer)
|
||||
defer v2writer.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(output, v2writer); err != nil {
|
||||
log.Info("Socks|Server: Failed to transport all TCP response: ", err)
|
||||
return err
|
||||
|
||||
@@ -37,16 +37,6 @@ func NewServerSession(validator protocol.UserValidator) *ServerSession {
|
||||
}
|
||||
}
|
||||
|
||||
// Release implements common.Releaseable.
|
||||
func (v *ServerSession) Release() {
|
||||
v.userValidator = nil
|
||||
v.requestBodyIV = nil
|
||||
v.requestBodyKey = nil
|
||||
v.responseBodyIV = nil
|
||||
v.responseBodyKey = nil
|
||||
v.responseWriter = nil
|
||||
}
|
||||
|
||||
func (v *ServerSession) DecodeRequestHeader(reader io.Reader) (*protocol.RequestHeader, error) {
|
||||
buffer := make([]byte, 512)
|
||||
|
||||
|
||||
@@ -87,15 +87,15 @@ func (v *VMessInboundHandler) Port() v2net.Port {
|
||||
}
|
||||
|
||||
func (v *VMessInboundHandler) Close() {
|
||||
v.Lock()
|
||||
v.accepting = false
|
||||
if v.listener != nil {
|
||||
v.Lock()
|
||||
v.listener.Close()
|
||||
v.listener = nil
|
||||
v.clients.Release()
|
||||
v.clients = nil
|
||||
v.Unlock()
|
||||
}
|
||||
v.Unlock()
|
||||
}
|
||||
|
||||
func (v *VMessInboundHandler) GetUser(email string) *protocol.User {
|
||||
@@ -134,8 +134,6 @@ func transferRequest(session *encoding.ServerSession, request *protocol.RequestH
|
||||
defer output.Close()
|
||||
|
||||
bodyReader := session.DecodeRequestBody(request, input)
|
||||
defer bodyReader.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(bodyReader, output); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -180,19 +178,13 @@ func (v *VMessInboundHandler) HandleConnection(connection internet.Connection) {
|
||||
}
|
||||
|
||||
connReader := v2net.NewTimeOutReader(8, connection)
|
||||
defer connReader.Release()
|
||||
|
||||
reader := bufio.NewReader(connReader)
|
||||
defer reader.Release()
|
||||
|
||||
v.RLock()
|
||||
if !v.accepting {
|
||||
v.RUnlock()
|
||||
return
|
||||
}
|
||||
session := encoding.NewServerSession(v.clients)
|
||||
defer session.Release()
|
||||
|
||||
request, err := session.DecodeRequestHeader(reader)
|
||||
v.RUnlock()
|
||||
|
||||
@@ -229,8 +221,6 @@ func (v *VMessInboundHandler) HandleConnection(connection internet.Connection) {
|
||||
})
|
||||
|
||||
writer := bufio.NewWriter(connection)
|
||||
defer writer.Release()
|
||||
|
||||
response := &protocol.ResponseHeader{
|
||||
Command: v.generateCommand(request),
|
||||
}
|
||||
|
||||
@@ -88,13 +88,9 @@ func (v *VMessOutboundHandler) Dispatch(target v2net.Destination, outboundRay ra
|
||||
defer input.ForceClose()
|
||||
|
||||
writer := bufio.NewWriter(conn)
|
||||
defer writer.Release()
|
||||
|
||||
session.EncodeRequestHeader(request, writer)
|
||||
|
||||
bodyWriter := session.EncodeRequestBody(request, writer)
|
||||
defer bodyWriter.Release()
|
||||
|
||||
firstPayload, err := input.ReadTimeout(time.Millisecond * 500)
|
||||
if err != nil && err != ray.ErrReadTimeout {
|
||||
return errors.Base(err).Message("VMess|Outbound: Failed to get first payload.")
|
||||
@@ -124,8 +120,6 @@ func (v *VMessOutboundHandler) Dispatch(target v2net.Destination, outboundRay ra
|
||||
defer output.Close()
|
||||
|
||||
reader := bufio.NewReader(conn)
|
||||
defer reader.Release()
|
||||
|
||||
header, err := session.DecodeResponseHeader(reader)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -136,8 +130,6 @@ func (v *VMessOutboundHandler) Dispatch(target v2net.Destination, outboundRay ra
|
||||
|
||||
reader.SetBuffered(false)
|
||||
bodyReader := session.DecodeResponseBody(request, reader)
|
||||
defer bodyReader.Release()
|
||||
|
||||
if err := buf.PipeUntilEOF(bodyReader, output); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user