func()

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
}