summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go15
1 files changed, 5 insertions, 10 deletions
diff --git a/main.go b/main.go
index 47663c7..410badc 100644
--- a/main.go
+++ b/main.go
@@ -32,21 +32,16 @@ type Data struct {
func dump(dir Direction, src, dst net.Conn, data chan<- Data) error {
buf := make([]byte, 4096)
+ r := io.TeeReader(src, dst)
for k := 1; ; k++ {
- n, err := src.Read(buf)
+ n, err := r.Read(buf)
if err != nil {
if err == io.EOF {
return nil
}
- return fmt.Errorf("READ %v", err)
+ return err
}
-
data <- Data{Round: k, Dir: dir, Data: buf[:n]}
-
- _, err = dst.Write(buf[:n])
- if err != nil {
- return fmt.Errorf("WRITE %v", err)
- }
}
}
@@ -75,14 +70,14 @@ func main() {
go func(dir Direction) {
if err := dump(dir, srv, cnt, data); err != nil {
- fmt.Println("ERROR", dir, err)
+ log.Println(dir, err)
}
wg.Done()
}(ServerClient)
go func(dir Direction) {
if err := dump(dir, cnt, srv, data); err != nil {
- fmt.Println("ERROR", dir, err)
+ log.Println(dir, err)
}
wg.Done()
}(ClientServer)