X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Ftestbeds%2Fplanetlab%2Ftunproto.py;h=6e518f4a7282fe0ec1cbff83709d70e87a826705;hb=684c8f0f3d2d3e6ff58897a2fca102c963d482c7;hp=a836d44d79bf89018bafec6323018eb1e71138d4;hpb=e5f88dd6b4e18cdba05caf852b69db9eab8fbed4;p=nepi.git diff --git a/src/nepi/testbeds/planetlab/tunproto.py b/src/nepi/testbeds/planetlab/tunproto.py index a836d44d..6e518f4a 100644 --- a/src/nepi/testbeds/planetlab/tunproto.py +++ b/src/nepi/testbeds/planetlab/tunproto.py @@ -222,6 +222,16 @@ class TunProtoBase(object): self._started = True def _launch_and_wait(self, *p, **kw): + try: + self.__launch_and_wait(*p, **kw) + except: + if self._launcher: + import sys + self._launcher._exc.append(sys.exc_info()) + else: + raise + + def __launch_and_wait(self, *p, **kw): local = self.local() self.launch(*p, **kw) @@ -287,13 +297,18 @@ class TunProtoBase(object): self._launcher = threading.Thread( target = self._launch_and_wait, args = (check_proto, listen, extra_args)) + self._launcher._exc = [] self._launcher.start() def async_launch_wait(self): if self._launcher: self._launcher.join() if not self._started: - raise RuntimeError, "Failed to launch TUN forwarder" + if self._launcher._exc: + exctyp,exval,exctrace = self._launcher._exc[0] + raise exctyp,exval,exctrace + else: + raise RuntimeError, "Failed to launch TUN forwarder" elif not self._started: self.launch()