Skip to content

Commit

Permalink
Merge pull request #59 from libp2p/fix-listen-error
Browse files Browse the repository at this point in the history
when ListenUDP fails once, try again next time
  • Loading branch information
marten-seemann authored Apr 24, 2019
2 parents 6cca441 + 2af204e commit 38838e9
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions p2p/transport/quic/transport.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,26 +31,30 @@ var quicConfig = &quic.Config{
}

type connManager struct {
connIPv4Once sync.Once
connIPv4 net.PacketConn
mutex sync.Mutex

connIPv6Once sync.Once
connIPv6 net.PacketConn
connIPv4 net.PacketConn
connIPv6 net.PacketConn
}

func (c *connManager) GetConnForAddr(network string) (net.PacketConn, error) {
c.mutex.Lock()
defer c.mutex.Unlock()

switch network {
case "udp4":
if c.connIPv4 != nil {
return c.connIPv4, nil
}
var err error
c.connIPv4Once.Do(func() {
c.connIPv4, err = c.createConn(network, "0.0.0.0:0")
})
c.connIPv4, err = c.createConn(network, "0.0.0.0:0")
return c.connIPv4, err
case "udp6":
if c.connIPv6 != nil {
return c.connIPv6, nil
}
var err error
c.connIPv6Once.Do(func() {
c.connIPv6, err = c.createConn(network, ":0")
})
c.connIPv6, err = c.createConn(network, ":0")
return c.connIPv6, err
default:
return nil, fmt.Errorf("unsupported network: %s", network)
Expand Down

0 comments on commit 38838e9

Please sign in to comment.