service.MultiService.startService(self)
d = defer.succeed(None)
- d.addCallback(lambda res: iputil.get_local_addresses_async())
d.addCallback(self._setup_tub)
def _ready(res):
self.log("%s running" % self.NODETYPE)
def log(self, *args, **kwargs):
return log.msg(*args, **kwargs)
- def _setup_tub(self, local_addresses):
+ def _setup_tub(self, ign):
# we can't get a dynamically-assigned portnum until our Tub is
# running, which means after startService.
l = self.tub.getListeners()[0]
location = self.get_config("node", "tub.location", "AUTO")
- # Replace the location "AUTO" with the detected local addresses.
+ # Replace the location "AUTO", if present, with the detected local addresses.
split_location = location.split(",")
if "AUTO" in split_location:
- split_location.remove("AUTO")
- split_location.extend([ "%s:%d" % (addr, portnum)
- for addr in local_addresses ])
- location = ",".join(split_location)
-
- self.log("Tub location set to %s" % location)
- self.tub.setLocation(location)
-
- return self.tub
+ d = iputil.get_local_addresses_async()
+ def _add_local(local_addresses):
+ split_location.remove("AUTO")
+ split_location.extend([ "%s:%d" % (addr, portnum)
+ for addr in local_addresses ])
+ return ",".join(split_location)
+ d.addCallback(_add_local)
+ else:
+ d = defer.succeed(location)
+
+ def _got_location(location):
+ self.log("Tub location set to %s" % (location,))
+ self.tub.setLocation(location)
+ return self.tub
+ d.addCallback(_got_location)
+ return d
def when_tub_ready(self):
return self._tub_ready_observerlist.when_fired()