From f3c9dee12549bc0a55c8c4fcc6f72f8e3e87fefd Mon Sep 17 00:00:00 2001 From: Jeffrey Hutzelman Date: Tue, 5 Mar 2013 00:55:38 -0500 Subject: server: Recheck other-realm server addresses daily We currently have no support for obeying the TTLs on DNS records containing the addresses of servers in other realms. For now, kludge around this by rechecking these addresses once a day whether we need to or not. --- server/realm.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/server/realm.c b/server/realm.c index 085c0ce..494c2e4 100644 --- a/server/realm.c +++ b/server/realm.c @@ -193,15 +193,16 @@ rlm_server_address_lookup_cb(void *arg, int status, int timeouts, struct hostent *hp) { ZRealm_server *srvr = arg; + int delay = 30; if (status == ARES_SUCCESS) { rlm_set_server_address(srvr, hp); - return; + delay = 24 * 3600; /* Check again once per day */ + } else { + syslog(LOG_WARNING, "%s: hostname lookup failed: %s", + srvr->name->string, ares_strerror(status)); } - syslog(LOG_WARNING, "%s: hostname lookup failed: %s", - srvr->name->string, ares_strerror(status)); - /* * Set a timer to trigger another lookup. * But, not if the server is deleted, which may have happened @@ -214,7 +215,7 @@ rlm_server_address_lookup_cb(void *arg, int status, int timeouts, * lookup in progress. */ if (!srvr->timer && !srvr->deleted) - srvr->timer = timer_set_rel(30, rlm_server_address_timer_cb, arg); + srvr->timer = timer_set_rel(delay, rlm_server_address_timer_cb, arg); } #else -- cgit v1.2.3