in pkg/hbone/hboned.go [192:223]
func (hb *HBone) HandleTCPProxy(w io.Writer, r io.Reader, hostPort string) error {
nc, err := net.Dial("tcp", hostPort)
if err != nil {
log.Println("Error dialing ", hostPort, err)
return err
}
s1 := Stream{
ID: "TCP-o",
Dst: nc,
Src: r,
}
ch := make(chan int)
go s1.CopyBuffered(ch, true)
s2 := Stream{
ID: "TCP-i",
Dst: w,
Src: nc,
}
s2.CopyBuffered(nil, true)
<-ch
if s1.Err != nil {
return s1.Err
}
if s2.Err != nil {
return s2.Err
}
return nil
}