diff --git a/point.go b/point.go index aa996f612..65946c673 100644 --- a/point.go +++ b/point.go @@ -97,7 +97,6 @@ func (vp *Point) Start() error { func (p *Point) DispatchToOutbound(packet v2net.Packet) InboundRay { ray := NewRay() - // TODO: handle error - p.och.Dispatch(packet, ray) + go p.och.Dispatch(packet, ray) return ray } diff --git a/proxy/freedom/freedom.go b/proxy/freedom/freedom.go index adc8e97a8..528d24fb8 100644 --- a/proxy/freedom/freedom.go +++ b/proxy/freedom/freedom.go @@ -46,14 +46,12 @@ func (vconn *FreedomConnection) Dispatch(firstPacket v2net.Packet, ray core.Outb go dumpOutput(conn, output, &readMutex, firstPacket.Destination().IsUDP()) - go func() { - writeMutex.Lock() - if tcpConn, ok := conn.(*net.TCPConn); ok { - tcpConn.CloseWrite() - } - readMutex.Lock() - conn.Close() - }() + writeMutex.Lock() + if tcpConn, ok := conn.(*net.TCPConn); ok { + tcpConn.CloseWrite() + } + readMutex.Lock() + conn.Close() return nil } diff --git a/proxy/vmess/vmessout.go b/proxy/vmess/vmessout.go index 6846d259c..c937ea844 100644 --- a/proxy/vmess/vmessout.go +++ b/proxy/vmess/vmessout.go @@ -88,8 +88,7 @@ func (handler *VMessOutboundHandler) Dispatch(firstPacket v2net.Packet, ray core request.RequestKey = buffer[16:32] request.ResponseHeader = buffer[32:] - go startCommunicate(request, vNextAddress, ray, firstPacket) - return nil + return startCommunicate(request, vNextAddress, ray, firstPacket) } func startCommunicate(request *protocol.VMessRequest, dest v2net.Destination, ray core.OutboundRay, firstPacket v2net.Packet) error {