MCPcopy Index your code
hub / github.com/Bitmessage/PyBitmessage / createPortMapping

Method createPortMapping

src/upnp.py:285–306  ·  view source on GitHub ↗
(self, router)

Source from the content-addressed store, hash-verified

283 logger.exception("UPnP send query failed")
284
285 def createPortMapping(self, router):
286 from debug import logger
287
288 for i in range(50):
289 try:
290 routerIP, = unpack('>I', socket.inet_aton(router.address))
291 localIP = self.localIP
292 if i == 0:
293 extPort = self.localPort # try same port first
294 elif i == 1 and self.extPort:
295 extPort = self.extPort # try external port from last time next
296 else:
297 extPort = randint(32767, 65535)
298 logger.debug("Attempt %i, requesting UPnP mapping for %s:%i on external port %i", i, localIP, self.localPort, extPort)
299 router.AddPortMapping(extPort, self.localPort, localIP, 'TCP', 'BitMessage')
300 shared.extPort = extPort
301 self.extPort = extPort
302 BMConfigParser().set('bitmessagesettings', 'extport', str(extPort))
303 BMConfigParser().save()
304 break
305 except UPnPError:
306 logger.debug("UPnP error: ", exc_info=True)
307
308 def deletePortMapping(self, router):
309 router.DeletePortMapping(router.extPort, 'TCP')

Callers 1

runMethod · 0.95

Calls 4

BMConfigParserClass · 0.90
AddPortMappingMethod · 0.80
setMethod · 0.80
saveMethod · 0.45

Tested by

no test coverage detected