summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2011-02-25 16:18:04 +0100
committerStephen Gallagher <sgallagh@redhat.com>2011-03-07 10:55:00 -0500
commit6e3d5232fd7a6da2ca6124b73eb729bf2965a727 (patch)
tree502d2dbb37948f5f733de387e411fca26f8d1bdf /src
parent19505f9345d7fd03a32b6c23ced2430d74750fc8 (diff)
downloadsssd-6e3d5232fd7a6da2ca6124b73eb729bf2965a727.tar.gz
sssd-6e3d5232fd7a6da2ca6124b73eb729bf2965a727.tar.xz
sssd-6e3d5232fd7a6da2ca6124b73eb729bf2965a727.zip
Reset server status after timeout
https://fedorahosted.org/sssd/ticket/809
Diffstat (limited to 'src')
-rw-r--r--src/providers/fail_over.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/providers/fail_over.c b/src/providers/fail_over.c
index fc03946c0..a09a409d4 100644
--- a/src/providers/fail_over.c
+++ b/src/providers/fail_over.c
@@ -43,6 +43,10 @@
#define DEFAULT_SERVER_STATUS SERVER_NAME_NOT_RESOLVED
#define DEFAULT_SRV_STATUS SRV_NEUTRAL
+#ifndef HOSTNAME_RESOLVE_TIMEOUT
+#define HOSTNAME_RESOLVE_TIMEOUT 7200
+#endif /* HOSTNAME_RESOLVE_TIMEOUT */
+
enum srv_lookup_status {
SRV_NEUTRAL, /* We didn't try this SRV lookup yet */
SRV_RESOLVED, /* This SRV lookup is resolved */
@@ -320,7 +324,7 @@ get_server_status(struct fo_server *server)
DEBUG(4, ("Reseting the server status of '%s'\n",
SERVER_NAME(server)));
server->common->server_status = SERVER_NAME_NOT_RESOLVED;
- server->common->last_status_change.tv_sec = 0;
+ server->common->last_status_change.tv_sec = tv.tv_sec;
}
}
@@ -348,6 +352,12 @@ get_port_status(struct fo_server *server)
server->port, SERVER_NAME(server)));
server->port_status = PORT_NEUTRAL;
server->last_status_change.tv_sec = tv.tv_sec;
+
+ if (STATUS_DIFF(server->common, tv) > HOSTNAME_RESOLVE_TIMEOUT) {
+ DEBUG(4, ("Reseting the server status of '%s'\n",
+ SERVER_NAME(server)));
+ fo_set_server_status(server, SERVER_NAME_NOT_RESOLVED);
+ }
}
}