mirror of
https://github.com/whyvl/wireproxy.git
synced 2025-04-29 19:01:42 +02:00
feat: correct process routines
This commit is contained in:
parent
6e3a0cdf3a
commit
679f46093c
2 changed files with 47 additions and 35 deletions
32
routine.go
32
routine.go
|
@ -170,7 +170,7 @@ func (c CredentialValidator) Valid(username, password string) bool {
|
|||
return u&p == 1
|
||||
}
|
||||
|
||||
// connForward copy data from `from` to `to`, then close both stream.
|
||||
// connForward copy data from `from` to `to`
|
||||
func connForward(from io.ReadWriteCloser, to io.ReadWriteCloser) {
|
||||
_, err := io.Copy(to, from)
|
||||
if err != nil {
|
||||
|
@ -195,15 +195,18 @@ func tcpClientForward(vt *VirtualTun, raddr *addressPort, conn net.Conn) {
|
|||
}
|
||||
|
||||
go func() {
|
||||
gr := conc.NewWaitGroup()
|
||||
gr.Go(func() {
|
||||
wg := conc.NewWaitGroup()
|
||||
wg.Go(func() {
|
||||
connForward(sconn, conn)
|
||||
})
|
||||
gr.Go(func() {
|
||||
wg.Go(func() {
|
||||
connForward(conn, sconn)
|
||||
})
|
||||
gr.Wait()
|
||||
wg.Wait()
|
||||
_ = sconn.Close()
|
||||
_ = conn.Close()
|
||||
sconn = nil
|
||||
conn = nil
|
||||
}()
|
||||
}
|
||||
|
||||
|
@ -230,14 +233,16 @@ func STDIOTcpForward(vt *VirtualTun, raddr *addressPort) {
|
|||
}
|
||||
|
||||
go func() {
|
||||
gr := conc.NewWaitGroup()
|
||||
gr.Go(func() {
|
||||
wg := conc.NewWaitGroup()
|
||||
wg.Go(func() {
|
||||
connForward(os.Stdin, sconn)
|
||||
})
|
||||
gr.Go(func() {
|
||||
wg.Go(func() {
|
||||
connForward(sconn, stdout)
|
||||
})
|
||||
gr.Wait()
|
||||
wg.Wait()
|
||||
_ = sconn.Close()
|
||||
sconn = nil
|
||||
}()
|
||||
}
|
||||
|
||||
|
@ -253,9 +258,8 @@ func (conf *TCPClientTunnelConfig) SpawnRoutine(vt *VirtualTun) {
|
|||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var conn net.Conn
|
||||
for {
|
||||
conn, err = server.Accept()
|
||||
conn, err := server.Accept()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
@ -299,6 +303,9 @@ func tcpServerForward(vt *VirtualTun, raddr *addressPort, conn net.Conn) {
|
|||
})
|
||||
gr.Wait()
|
||||
_ = sconn.Close()
|
||||
_ = conn.Close()
|
||||
sconn = nil
|
||||
conn = nil
|
||||
}()
|
||||
}
|
||||
|
||||
|
@ -315,9 +322,8 @@ func (conf *TCPServerTunnelConfig) SpawnRoutine(vt *VirtualTun) {
|
|||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var conn net.Conn
|
||||
for {
|
||||
conn, err = server.Accept()
|
||||
conn, err := server.Accept()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue