summaryrefslogtreecommitdiffstats
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
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.
-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);
- }
}
}