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