diff --git a/proxy/wireguard/wireguard.go b/proxy/wireguard/wireguard.go index 0d4994f5..53e7dcd5 100644 --- a/proxy/wireguard/wireguard.go +++ b/proxy/wireguard/wireguard.go @@ -152,6 +152,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte if err != nil { return newError("failed to create TCP connection").Base(err) } + defer conn.Close() requestFunc = func() error { defer timer.SetTimeout(p.Timeouts.DownlinkOnly) @@ -166,6 +167,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte if err != nil { return newError("failed to create UDP connection").Base(err) } + defer conn.Close() requestFunc = func() error { defer timer.SetTimeout(p.Timeouts.DownlinkOnly) @@ -183,6 +185,8 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte responseDonePost := task.OnSuccess(responseFunc, task.Close(link.Writer)) if err := task.Run(ctx, requestFunc, responseDonePost); err != nil { + common.Interrupt(link.Reader) + common.Interrupt(link.Writer) return newError("connection ends").Base(err) }