瀏覽代碼

Fix HTTP proxy

Darien Raymond 8 年之前
父節點
當前提交
f6e0d08d34
共有 2 個文件被更改,包括 3 次插入4 次删除
  1. 2 2
      app/proxyman/outbound/handler.go
  2. 1 2
      proxy/http/server.go

+ 2 - 2
app/proxyman/outbound/handler.go

@@ -2,7 +2,6 @@ package outbound
 
 import (
 	"context"
-	"errors"
 	"io"
 	"net"
 	"time"
@@ -10,6 +9,7 @@ import (
 	"v2ray.com/core/app"
 	"v2ray.com/core/app/proxyman"
 	"v2ray.com/core/common/buf"
+	"v2ray.com/core/common/errors"
 	"v2ray.com/core/common/log"
 	v2net "v2ray.com/core/common/net"
 	"v2ray.com/core/proxy"
@@ -67,7 +67,7 @@ func (h *Handler) Dispatch(ctx context.Context, outboundRay ray.OutboundRay) {
 	ctx = proxy.ContextWithDialer(ctx, h)
 	err := h.proxy.Process(ctx, outboundRay)
 	// Ensure outbound ray is properly closed.
-	if err != nil {
+	if err != nil && errors.Cause(err) != io.EOF {
 		outboundRay.OutboundOutput().CloseError()
 	} else {
 		outboundRay.OutboundOutput().Close()

+ 1 - 2
proxy/http/server.go

@@ -213,10 +213,9 @@ func (s *Server) handlePlainHTTP(ctx context.Context, request *http.Request, rea
 	ray := s.packetDispatcher.DispatchToOutbound(ctx)
 	input := ray.InboundInput()
 	output := ray.InboundOutput()
+	defer input.Close()
 
 	requestDone := signal.ExecuteAsync(func() error {
-		defer input.Close()
-
 		requestWriter := bufio.NewWriter(buf.NewBytesWriter(ray.InboundInput()))
 		err := request.Write(requestWriter)
 		if err != nil {