multiserver/proxy.go

36 lines
508 B
Go
Raw Normal View History

2021-01-05 11:34:35 -08:00
package multiserver
import "log"
func Proxy(src, dst *Peer) {
for {
pkt, err := src.Recv()
if !src.Forward() {
return
} else if !dst.Forward() {
break
}
if err != nil {
if err == ErrClosed {
msg := src.Addr().String() + " disconnected"
if src.TimedOut() {
msg += " (timed out)"
}
log.Print(msg)
break
}
log.Print(err)
continue
}
if _, err := dst.Send(pkt); err != nil {
log.Print(err)
}
}
dst.SendDisco(0, true)
dst.Close()
}