diff --git a/proxy/http/server.go b/proxy/http/server.go index dbbea0ab..7ced64fc 100644 --- a/proxy/http/server.go +++ b/proxy/http/server.go @@ -239,11 +239,12 @@ func (v *Server) handlePlainHTTP(request *http.Request, session *proxy.SessionIn StripHopByHopHeaders(request) ray := v.packetDispatcher.DispatchToOutbound(session) + defer ray.InboundInput().Close() + defer ray.InboundOutput().Release() var finish sync.WaitGroup finish.Add(1) go func() { - defer ray.InboundInput().Close() defer finish.Done() requestWriter := bufio.NewWriter(buf.NewBytesWriter(ray.InboundInput())) err := request.Write(requestWriter) @@ -256,7 +257,6 @@ func (v *Server) handlePlainHTTP(request *http.Request, session *proxy.SessionIn finish.Add(1) go func() { - defer ray.InboundOutput().Release() defer finish.Done() responseReader := bufio.OriginalReader(buf.NewBytesReader(ray.InboundOutput())) response, err := http.ReadResponse(responseReader, request) @@ -272,7 +272,6 @@ func (v *Server) handlePlainHTTP(request *http.Request, session *proxy.SessionIn } responseWriter.Flush() }() - finish.Wait() }