@@ -6,11 +6,12 @@ package server
66
77import (
88 "fmt"
9- "github.com/NodeFactoryIo/vedran/pkg/http-tunnel"
10- "github.com/NodeFactoryIo/vedran/pkg/http-tunnel/proto"
11- log "github.com/sirupsen/logrus"
129 "io"
1310 "net"
11+
12+ tunnel "github.com/NodeFactoryIo/vedran/pkg/http-tunnel"
13+ "github.com/NodeFactoryIo/vedran/pkg/http-tunnel/proto"
14+ log "github.com/sirupsen/logrus"
1415)
1516
1617// TCPProxy forwards TCP streams.
@@ -80,22 +81,19 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage
8081 }).Error ("dial failed" , err )
8182 return
8283 }
83- defer local .Close ()
8484
8585 if err := tunnel .KeepAlive (local ); err != nil {
8686 clogger .WithFields (log.Fields {
8787 "target" : target ,
8888 }).Error ("TCP keepalive for tunneled connection failed" , err )
8989 }
9090
91- done := make (chan struct {})
9291 go func () {
9392 loggerWithContext := log .WithContext (p .logger .Context ).WithFields (log.Fields {
9493 "dst" : msg .ForwardedHost ,
9594 "src" : target ,
9695 })
9796 transfer (flushWriter {w }, local , loggerWithContext )
98- close (done )
9997 }()
10098
10199 loggerWithContext := log .WithContext (p .logger .Context ).WithFields (log.Fields {
@@ -104,7 +102,10 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage
104102 })
105103 transfer (local , r , loggerWithContext )
106104
107- <- done
105+ err = local .Close ()
106+ if err != nil {
107+ clogger .Errorf ("Transfer close failed because of %v" , err )
108+ }
108109}
109110
110111func (p * TCPProxy ) localAddrFor (hostPort string ) string {
0 commit comments