mirror of
https://github.com/openziti/zrok.git
synced 2024-11-07 08:44:14 +01:00
41 lines
950 B
Go
41 lines
950 B
Go
package endpoints
|
|
|
|
import (
|
|
"github.com/sirupsen/logrus"
|
|
"io"
|
|
"net"
|
|
)
|
|
|
|
const bufSz = 10240
|
|
|
|
func TXer(from, to net.Conn) {
|
|
logrus.Debugf("started '%v' -> '%v'", from.RemoteAddr(), to.RemoteAddr())
|
|
defer logrus.Debugf("exited '%v' -> '%v'", from.RemoteAddr(), to.RemoteAddr())
|
|
|
|
buf := make([]byte, bufSz)
|
|
for {
|
|
if rxsz, err := from.Read(buf); err == nil {
|
|
if txsz, err := to.Write(buf[:rxsz]); err == nil {
|
|
if txsz != rxsz {
|
|
logrus.Errorf("short write '%v' -> '%v' (%d != %d)", from.RemoteAddr(), to.RemoteAddr(), txsz, rxsz)
|
|
_ = to.Close()
|
|
_ = from.Close()
|
|
return
|
|
}
|
|
} else {
|
|
logrus.Errorf("write error '%v' -> '%v': %v", from.RemoteAddr(), to.RemoteAddr(), err)
|
|
_ = to.Close()
|
|
_ = from.Close()
|
|
return
|
|
}
|
|
} else {
|
|
if err != io.EOF {
|
|
logrus.Errorf("read error '%v' -> '%v': %v", from.RemoteAddr(), to.RemoteAddr(), err)
|
|
}
|
|
_ = to.Close()
|
|
_ = from.Close()
|
|
return
|
|
}
|
|
}
|
|
}
|