summaryrefslogtreecommitdiffstats
path: root/src
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:50:32 -0500
commited411b97f0e3171d221c60b4ee3e887ed0d8d968 (patch)
treefe0558a28e1bbbc015ae47b17fb618cd4a0c09a7 /src
parent1184c6ef1c36fbd2304fe18ff7720fceada1aab0 (diff)
downloadsssd-ed411b97f0e3171d221c60b4ee3e887ed0d8d968.tar.gz
sssd-ed411b97f0e3171d221c60b4ee3e887ed0d8d968.tar.xz
sssd-ed411b97f0e3171d221c60b4ee3e887ed0d8d968.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')
-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);
- }
}
}