return c.conn.Write(append(size, data...))
}
-func startTCP() chan Pkt {
+func startTCP(sink *chan Pkt) {
bind, err := net.ResolveTCPAddr("tcp", *bindAddr)
if err != nil {
log.Fatalln("Can not resolve bind address:", err)
if err != nil {
log.Fatalln("Can not listen on TCP:", err)
}
- sink := make(chan Pkt)
+ log.Println("Listening on TCP", *bindAddr)
go func() {
for {
conn, _ := listener.AcceptTCP()
if sizeNeed > uint16(govpn.MTU)-2 {
log.Println("Invalid TCP size, skipping")
sizeNbuf = 0
- sink <- Pkt{ready: ready}
+ *sink <- Pkt{ready: ready}
continue
}
bufN = 0
goto ReadMore
}
sizeNbuf = 0
- sink <- Pkt{
+ *sink <- Pkt{
addr,
TCPSender{conn},
buf[:sizeNeed],
ready <- struct{}{}
}
}()
- return sink
}