diff options
Diffstat (limited to 'src/binder.go')
-rw-r--r-- | src/binder.go | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/binder.go b/src/binder.go index 8950c29..fc198e1 100644 --- a/src/binder.go +++ b/src/binder.go @@ -1,6 +1,7 @@ package binder import ( + "io" "fmt" "net" "os" @@ -87,6 +88,11 @@ func DropRoot() { } } +func copyData(c chan struct{}, from io.Reader, to io.WriteCloser) { + io.Copy(to, from) + c <- struct{}{} +} + func Start(toAddr string, listener net.Listener) { for { connFrom, err := listener.Accept() @@ -113,9 +119,9 @@ func Start(toAddr string, listener net.Listener) { } defer connTo.Close() - c := make(chan g.CopyResult) - go g.CopyData(c, "c2s", connFrom, connTo) - go g.CopyData(c, "s2c", connTo, connFrom) + c := make(chan struct{}) + go copyData(c, connFrom, connTo) + go copyData(c, connTo, connFrom) go func() { <- c EmitActiveConnection.Dec() |