SSHTunnel/Tunnel/Transfer.go
Thorsten Sommer a16b99af6e Version 1.2.0
2015-09-28 15:28:11 +02:00

28 lines
807 B
Go

package Tunnel
import (
"io"
"log"
)
// The transfer function.
func transfer(fromReader io.Reader, toWriter io.Writer, name string, quit chan bool) {
log.Printf("%s transfer started.", name)
// This call blocks until the client or service will close the connection.
// Therefore, this call maybe takes hours or even longer. Concern, may this
// program will be used to connect multiple servers to make e.g. a database
// available...
if _, err := io.Copy(toWriter, fromReader); err != nil {
// In this case, we do not fail the whole program: Regarding how the client
// or the service was e.g. shut down, the error may only means 'client has been closed'.
log.Printf("%s transfer failed: %s\n", name, err.Error())
} else {
log.Printf("%s transfer closed.\n", name)
}
quit <- true
}