@@ -24,7 +24,6 @@ import (
2424 "sync"
2525 "time"
2626
27- "github.com/sourcegraph/conc"
2827 "github.com/things-go/go-socks5"
2928 "github.com/things-go/go-socks5/bufferpool"
3029
@@ -190,6 +189,9 @@ func (c CredentialValidator) Valid(username, password string) bool {
190189
191190// connForward copy data from `from` to `to`
192191func connForward (from io.ReadWriteCloser , to io.ReadWriteCloser ) {
192+ defer from .Close ()
193+ defer to .Close ()
194+
193195 _ , err := io .Copy (to , from )
194196 if err != nil {
195197 errorLogger .Printf ("Cannot forward traffic: %s\n " , err .Error ())
@@ -212,20 +214,8 @@ func tcpClientForward(vt *VirtualTun, raddr *addressPort, conn net.Conn) {
212214 return
213215 }
214216
215- go func () {
216- wg := conc .NewWaitGroup ()
217- wg .Go (func () {
218- connForward (sconn , conn )
219- })
220- wg .Go (func () {
221- connForward (conn , sconn )
222- })
223- wg .Wait ()
224- _ = sconn .Close ()
225- _ = conn .Close ()
226- sconn = nil
227- conn = nil
228- }()
217+ go connForward (sconn , conn )
218+ go connForward (conn , sconn )
229219}
230220
231221// STDIOTcpForward starts a new connection via wireguard and forward traffic from `conn`
@@ -250,18 +240,8 @@ func STDIOTcpForward(vt *VirtualTun, raddr *addressPort) {
250240 return
251241 }
252242
253- go func () {
254- wg := conc .NewWaitGroup ()
255- wg .Go (func () {
256- connForward (os .Stdin , sconn )
257- })
258- wg .Go (func () {
259- connForward (sconn , stdout )
260- })
261- wg .Wait ()
262- _ = sconn .Close ()
263- sconn = nil
264- }()
243+ go connForward (os .Stdin , sconn )
244+ go connForward (sconn , stdout )
265245}
266246
267247// SpawnRoutine spawns a local TCP server which acts as a proxy to the specified target
@@ -311,20 +291,9 @@ func tcpServerForward(vt *VirtualTun, raddr *addressPort, conn net.Conn) {
311291 return
312292 }
313293
314- go func () {
315- gr := conc .NewWaitGroup ()
316- gr .Go (func () {
317- connForward (sconn , conn )
318- })
319- gr .Go (func () {
320- connForward (conn , sconn )
321- })
322- gr .Wait ()
323- _ = sconn .Close ()
324- _ = conn .Close ()
325- sconn = nil
326- conn = nil
327- }()
294+ go connForward (sconn , conn )
295+ go connForward (conn , sconn )
296+
328297}
329298
330299// SpawnRoutine spawns a TCP server on wireguard which acts as a proxy to the specified target
0 commit comments