X-Git-Url: http://git.ipfire.org/?p=ddns.git;a=blobdiff_plain;f=src%2Fddns%2Fsystem.py;h=8415579455763369a0a9ac844841ab2ee1f39945;hp=cab2942aba4c101eb4da157225527e238d99c579;hb=ff43fa7041a5f948aa7f92047fbc53ea5b1a461f;hpb=fb94cc5aa70004a58571281e0e3c7f398ec3207a diff --git a/src/ddns/system.py b/src/ddns/system.py index cab2942..8415579 100644 --- a/src/ddns/system.py +++ b/src/ddns/system.py @@ -166,6 +166,11 @@ class DDNSSystem(object): return resp except urllib2.HTTPError, e: + # Log response header. + logger.debug(_("Response header (Status Code %s):") % e.code) + for k, v in e.hdrs.items(): + logger.debug(" %s: %s" % (k, v)) + # 400 - Bad request if e.code == 400: raise DDNSRequestError(e.reason) @@ -175,6 +180,12 @@ class DDNSSystem(object): elif e.code in (401, 403): raise DDNSAuthenticationError(e.reason) + # 404 - Not found + # Either the provider has changed the API, or + # there is an error on the server + elif e.code == 404: + raise DDNSNotFound(e.reason) + # 500 - Internal Server Error elif e.code == 500: raise DDNSInternalServerError(e.reason) @@ -188,6 +199,10 @@ class DDNSSystem(object): except urllib2.URLError, e: if e.reason: + # Name or service not known + if e.reason.errno == -2: + raise DDNSResolveError + # Network Unreachable (e.g. no IPv6 access) if e.reason.errno == 101: raise DDNSNetworkUnreachableError @@ -316,6 +331,10 @@ class DDNSSystem(object): if e.errno == -2: return [] + # Temporary failure in name resolution + elif e.errno == -3: + raise DDNSResolveError(hostname) + # No record for requested family available (e.g. no AAAA) elif e.errno == -5: return []