[PATCH 1/2] Catch "no route to host" errors

Michael Tremer michael.tremer at ipfire.org
Wed Jun 24 00:34:32 CEST 2015


When there is no route to a target host, we will throw
a DDNSNetworkError so that this error can be handled afterwards.

Signed-off-by: Michael Tremer <michael.tremer at ipfire.org>
---
 src/ddns/errors.py | 7 +++++++
 src/ddns/system.py | 4 ++++
 2 files changed, 11 insertions(+)

diff --git a/src/ddns/errors.py b/src/ddns/errors.py
index 293b4eb..26bc18e 100644
--- a/src/ddns/errors.py
+++ b/src/ddns/errors.py
@@ -109,6 +109,13 @@ class DDNSNetworkUnreachableError(DDNSNetworkError):
 	reason = N_("Network unreachable")
 
 
+class DDNSNoRouteToHostError(DDNSNetworkError):
+	"""
+		Thrown when there is no route to a host.
+	"""
+	reason = N_("No route to host")
+
+
 class DDNSNotFound(DDNSError):
 	"""
 		Thrown when the called URL has not been found
diff --git a/src/ddns/system.py b/src/ddns/system.py
index 8415579..6a21af8 100644
--- a/src/ddns/system.py
+++ b/src/ddns/system.py
@@ -211,6 +211,10 @@ class DDNSSystem(object):
 				elif e.reason.errno == 111:
 					raise DDNSConnectionRefusedError
 
+				# No route to host
+				elif e.reason.errno == 113:
+					raise DDNSNoRouteToHostError(req.host)
+
 			# Raise all other unhandled exceptions.
 			raise
 
-- 
1.8.1



More information about the ddns mailing list