package iowrappers import ( "io" "log" ) func SynchronizeStreams(stream1, stream2 io.ReadWriter) { waitChannel := make(chan bool, 2) go func() { defer func() { waitChannel <- true }() _, err := io.Copy(stream1, stream2) if err != nil { log.Printf("SynchronizeStreamms: error(1) %v\n", err) } }() go func() { defer func() { waitChannel <- true }() _, err := io.Copy(stream2, stream1) if err != nil { log.Printf("SynchronizeStreams: error(2) %v\n", err) } }() <-waitChannel log.Println("SynchronizeStreams: Connection closed") }