From 3c480d39e0f77611c72bba67f1ce457d52343471 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 8 Mar 2011 15:06:09 +0100 Subject: 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. --- src/providers/fail_over.c | 15 +++++++-------- 1 file 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); - } } } -- cgit