Files

34 lines
396 B
Go

package chisel
import (
"io"
"net"
"sync"
)
func Pipe(src net.Conn, dst net.Conn) (int64, int64) {
var sent, received int64
var c = make(chan bool)
var o sync.Once
close := func() {
src.Close()
dst.Close()
close(c)
}
go func() {
received, _ = io.Copy(src, dst)
o.Do(close)
}()
go func() {
sent, _ = io.Copy(dst, src)
o.Do(close)
}()
<-c
return sent, received
}