summaryrefslogtreecommitdiffstats
path: root/src/providers/fail_over.c
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2011-03-08 15:06:09 +0100
committerStephen Gallagher <sgallagh@redhat.com>2011-03-08 11:47:39 -0500
commit3c480d39e0f77611c72bba67f1ce457d52343471 (patch)
tree3e75a49bcdc2c4a9c048e6a823b5c0514f75e0da /src/providers/fail_over.c
parentcf779900d260654c514da5c3a7c4c66cd0245b9a (diff)
downloadsssd-3c480d39e0f77611c72bba67f1ce457d52343471.tar.gz
sssd-3c480d39e0f77611c72bba67f1ce457d52343471.tar.xz
sssd-3c480d39e0f77611c72bba67f1ce457d52343471.zip
Always expire host name resolution
The previous version of the patch only expired a resolved host name if the port was being reset. We want to always expire it so we notice IP address changes even if the previous server is still up.
Diffstat (limited to 'src/providers/fail_over.c')
-rw-r--r--src/providers/fail_over.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/providers/fail_over.c b/src/providers/fail_over.c
index 37ffe268f..92089226b 100644
--- a/src/providers/fail_over.c
+++ b/src/providers/fail_over.c
@@ -318,8 +318,8 @@ get_server_status(struct fo_server *server)
str_server_status(server->common->server_status)));
timeout = server->service->ctx->opts->retry_timeout;
+ gettimeofday(&tv, NULL);
if (timeout != 0 && server->common->server_status == SERVER_NOT_WORKING) {
- gettimeofday(&tv, NULL);
if (STATUS_DIFF(server->common, tv) > timeout) {
DEBUG(4, ("Reseting the server status of '%s'\n",
SERVER_NAME(server)));
@@ -328,6 +328,12 @@ get_server_status(struct fo_server *server)
}
}
+ if (STATUS_DIFF(server->common, tv) > HOSTNAME_RESOLVE_TIMEOUT) {
+ DEBUG(4, ("Hostname resolution expired, reseting the server "
+ "status of '%s'\n", SERVER_NAME(server)));
+ fo_set_server_status(server, SERVER_NAME_NOT_RESOLVED);
+ }
+
return server->common->server_status;
}
@@ -352,13 +358,6 @@ 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 (server->common != NULL &&
- 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);
- }
}
}