]> git.ipfire.org Git - oddments/ddns.git/commitdiff
Soft-fail on network errors
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 23 Jun 2015 22:34:33 +0000 (22:34 +0000)
committerStefan Schantl <stefan.schantl@ipfire.org>
Wed, 1 Jul 2015 19:42:23 +0000 (21:42 +0200)
When an update could not be performed because of a network
error (host unreachable/no route to host) we should not
log an error to the database and hold off updates for a
long time.

Those errors are usually caused by local configuration
errors and the servers of the providers should not be
bothered with update requests as those won't reach them
any way.

The client will try to resend the update at the next
update call.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
src/ddns/providers.py

index 28b765b550da956afa85ba7f09aa903b15910e5e..fc1fb82cb6ac63b7feb7e96ac5d6a013b0787fe3 100644 (file)
@@ -161,6 +161,12 @@ class DDNSProvider(object):
                try:
                        self.update()
 
                try:
                        self.update()
 
+               # Catch network errors early, because we do not want to log
+               # them to the database. They are usually temporary and caused
+               # by the client side, so that we will retry quickly.
+               except DDNSNetworkError as e:
+                       raise
+
                # In case of any errors, log the failed request and
                # raise the exception.
                except DDNSError as e:
                # In case of any errors, log the failed request and
                # raise the exception.
                except DDNSError as e: