|
|
@@ -182,15 +182,15 @@ func (s *Server) handleConnect(ctx context.Context, request *http.Request, reade
|
|
|
reader = nil
|
|
|
}
|
|
|
|
|
|
- requestDone := signal.ExecuteAsync(func() error {
|
|
|
+ requestDone := func() error {
|
|
|
defer ray.InboundInput().Close()
|
|
|
defer timer.SetTimeout(s.policy().Timeouts.DownlinkOnly)
|
|
|
|
|
|
v2reader := buf.NewReader(conn)
|
|
|
return buf.Copy(v2reader, ray.InboundInput(), buf.UpdateActivity(timer))
|
|
|
- })
|
|
|
+ }
|
|
|
|
|
|
- responseDone := signal.ExecuteAsync(func() error {
|
|
|
+ responseDone := func() error {
|
|
|
defer timer.SetTimeout(s.policy().Timeouts.UplinkOnly)
|
|
|
|
|
|
v2writer := buf.NewWriter(conn)
|
|
|
@@ -199,9 +199,9 @@ func (s *Server) handleConnect(ctx context.Context, request *http.Request, reade
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
- })
|
|
|
+ }
|
|
|
|
|
|
- if err := signal.ErrorOrFinish2(ctx, requestDone, responseDone); err != nil {
|
|
|
+ if err := signal.ExecuteParallel(ctx, requestDone, responseDone); err != nil {
|
|
|
ray.InboundInput().CloseError()
|
|
|
ray.InboundOutput().CloseError()
|
|
|
return newError("connection ends").Base(err)
|
|
|
@@ -251,7 +251,7 @@ func (s *Server) handlePlainHTTP(ctx context.Context, request *http.Request, wri
|
|
|
|
|
|
var result error = errWaitAnother
|
|
|
|
|
|
- requestDone := signal.ExecuteAsync(func() error {
|
|
|
+ requestDone := func() error {
|
|
|
request.Header.Set("Connection", "close")
|
|
|
|
|
|
requestWriter := buf.NewBufferedWriter(ray.InboundInput())
|
|
|
@@ -260,9 +260,9 @@ func (s *Server) handlePlainHTTP(ctx context.Context, request *http.Request, wri
|
|
|
return newError("failed to write whole request").Base(err).AtWarning()
|
|
|
}
|
|
|
return nil
|
|
|
- })
|
|
|
+ }
|
|
|
|
|
|
- responseDone := signal.ExecuteAsync(func() error {
|
|
|
+ responseDone := func() error {
|
|
|
responseReader := bufio.NewReaderSize(buf.NewBufferedReader(ray.InboundOutput()), buf.Size)
|
|
|
response, err := http.ReadResponse(responseReader, request)
|
|
|
if err == nil {
|
|
|
@@ -296,9 +296,9 @@ func (s *Server) handlePlainHTTP(ctx context.Context, request *http.Request, wri
|
|
|
return newError("failed to write response").Base(err).AtWarning()
|
|
|
}
|
|
|
return nil
|
|
|
- })
|
|
|
+ }
|
|
|
|
|
|
- if err := signal.ErrorOrFinish2(ctx, requestDone, responseDone); err != nil {
|
|
|
+ if err := signal.ExecuteParallel(ctx, requestDone, responseDone); err != nil {
|
|
|
input.CloseError()
|
|
|
output.CloseError()
|
|
|
return newError("connection ends").Base(err)
|