p2p/nat: remove forceful port mapping in upnp

pull/30265/head
qqqeck 2 months ago
parent 142c94d628
commit 59a2943dee
  1. 14
      p2p/nat/natupnp.go

@ -86,7 +86,6 @@ func (n *upnp) AddMapping(protocol string, extport, intport int, desc string, li
} }
protocol = strings.ToUpper(protocol) protocol = strings.ToUpper(protocol)
lifetimeS := uint32(lifetime / time.Second) lifetimeS := uint32(lifetime / time.Second)
n.DeleteMapping(protocol, extport, intport)
err = n.withRateLimit(func() error { err = n.withRateLimit(func() error {
return n.client.AddPortMapping("", uint16(extport), protocol, uint16(intport), ip.String(), true, desc, lifetimeS) return n.client.AddPortMapping("", uint16(extport), protocol, uint16(intport), ip.String(), true, desc, lifetimeS)
@ -110,12 +109,15 @@ func (n *upnp) addAnyPortMapping(protocol string, extport, intport int, ip net.I
} }
// It will retry with a random port number if the client does // It will retry with a random port number if the client does
// not support AddAnyPortMapping. // not support AddAnyPortMapping.
extport = n.randomPort() var err error
err := n.client.AddPortMapping("", uint16(extport), protocol, uint16(intport), ip.String(), true, desc, lifetimeS) for i := 0; i < 3; i++ {
if err != nil { extport = n.randomPort()
return 0, err err := n.client.AddPortMapping("", uint16(extport), protocol, uint16(intport), ip.String(), true, desc, lifetimeS)
if err == nil {
return uint16(extport), nil
}
} }
return uint16(extport), nil return 0, err
} }
func (n *upnp) randomPort() int { func (n *upnp) randomPort() int {

Loading…
Cancel
Save