From ece10e8cd2a475bd3c17b1cee59f261c7c3c7ca3 Mon Sep 17 00:00:00 2001 From: Goffi Date: Thu, 1 Feb 2018 07:24:34 +0100 Subject: [PATCH] plugin NAT-port: raise MappingError if something get wrong during "addportmapping" + log unexpected errors (i.e. everything else than MappingError) --- src/plugins/plugin_misc_nat-port.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/plugins/plugin_misc_nat-port.py b/src/plugins/plugin_misc_nat-port.py index 9337f932..abdd084a 100644 --- a/src/plugins/plugin_misc_nat-port.py +++ b/src/plugins/plugin_misc_nat-port.py @@ -150,12 +150,16 @@ class NatPort(object): # to avoid testing again the first series the next time self._starting_port_cache = ext_port - mapping = self._upnp.addportmapping( - # the last parameter is remoteHost, we don't use it - ext_port, protocol, self._upnp.lanaddr, int_port, desc, '') + try: + mapping = self._upnp.addportmapping( + # the last parameter is remoteHost, we don't use it + ext_port, protocol, self._upnp.lanaddr, int_port, desc, '') + except Exception as e: + log.error(_(u"addportmapping error: {msg}").format(msg=e)) + raise failure.Failure(MappingError()) if not mapping: - raise MappingError + raise failure.Failure(MappingError()) else: self._to_unmap.append((ext_port, protocol)) finally: @@ -182,9 +186,12 @@ class NatPort(object): ext_port = ext_port, )) return ext_port - def mappingEb(failure): - failure.trap(MappingError) + def mappingEb(failure_): + failure_.trap(MappingError) log.warning(u"Can't map internal {int_port}".format(int_port=int_port)) + def mappingUnknownEb(failure_): + log.error(_(u"error while trying to map ports: {msg}").format(msg=failure_)) d = threads.deferToThread(self._mapPortBlocking, int_port, ext_port, protocol, desc) d.addCallbacks(mappingCb, mappingEb) + d.addErrback(mappingUnknownEb) return d