firstUpCall := true
var peer *govpn.Peer
var ethPkt []byte
- var udpPkt *govpn.UDPPkt
+ var udpPkt govpn.UDPPkt
var udpPktData []byte
knownPeers := govpn.KnownPeers(map[string]**govpn.Peer{remote.String(): &peer})
if timeouts >= timeout {
break MainCycle
}
- if udpPkt == nil {
+ if udpPkt.Addr == nil {
udpReady <- struct{}{}
continue
}
peerReadySink := make(chan PeerReadyEvent)
knownPeers := govpn.KnownPeers(make(map[string]**govpn.Peer))
var peerReady PeerReadyEvent
- var udpPkt *govpn.UDPPkt
+ var udpPkt govpn.UDPPkt
var udpPktData []byte
var ethEvent EthEvent
var peerId *govpn.PeerId
}
ethEvent.peer.EthProcess(ethEvent.data, conn, ethEvent.ready)
case udpPkt = <-udpSink:
- if udpPkt == nil {
+ if udpPkt.Addr == nil {
udpReady <- struct{}{}
continue
}
// all UDP packet data will be saved, channel where information about
// remote address and number of written bytes are stored, and a channel
// used to tell that buffer is ready to be overwritten.
-func ConnListen(conn *net.UDPConn) (chan *UDPPkt, []byte, chan struct{}) {
+func ConnListen(conn *net.UDPConn) (chan UDPPkt, []byte, chan struct{}) {
buf := make([]byte, MTU)
- sink := make(chan *UDPPkt)
+ sink := make(chan UDPPkt)
sinkReady := make(chan struct{})
go func(conn *net.UDPConn) {
var n int
n, addr, err = conn.ReadFromUDP(buf)
if err != nil {
// This is needed for ticking the timeouts counter outside
- sink <- nil
+ sink <- UDPPkt{nil, 0}
continue
}
- sink <- &UDPPkt{addr, n}
+ sink <- UDPPkt{addr, n}
}
}(conn)
sinkReady <- struct{}{}