From d94f34f7ae6dee9bdd9dcc9f2ab7fd8b370d0b62 Mon Sep 17 00:00:00 2001 From: venaas Date: Mon, 14 Apr 2008 13:56:53 +0000 Subject: fixed problem with recovering from server connection going down and made reconnect timeouts more aggressive git-svn-id: https://svn.testnett.uninett.no/radsecproxy/trunk@228 e88ac4ed-0b26-0410-9574-a7f39faa03bf --- radsecproxy.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/radsecproxy.c b/radsecproxy.c index 9bf050b..9a769ef 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -806,15 +806,15 @@ void tlsconnect(struct server *server, struct timeval *when, char *text) { elapsed = now.tv_sec - server->lastconnecttry.tv_sec; if (server->connectionok) { server->connectionok = 0; - sleep(10); - } else if (elapsed < 5) - sleep(10); - else if (elapsed < 300) { + sleep(2); + } else if (elapsed < 1) + sleep(2); + else if (elapsed < 60) { debug(DBG_INFO, "tlsconnect: sleeping %lds", elapsed); sleep(elapsed); } else if (elapsed < 100000) { - debug(DBG_INFO, "tlsconnect: sleeping %ds", 600); - sleep(600); + debug(DBG_INFO, "tlsconnect: sleeping %ds", 60); + sleep(60); } else server->lastconnecttry.tv_sec = now.tv_sec; /* no sleep at startup */ debug(DBG_WARN, "tlsconnect: trying to open TLS connection to %s port %s", server->conf->host, server->conf->port); @@ -1665,10 +1665,12 @@ void respondreject(struct request *rq, char *message) { struct server *realm2server(struct realm *realm) { struct list_node *entry; - struct server *server, *best = NULL; + struct server *server, *best = NULL, *first = NULL; for (entry = list_first(realm->srvconfs); entry; entry = list_next(entry)) { server = ((struct clsrvconf *)entry->data)->servers; + if (!first) + first = server; if (!server->connectionok) continue; if (!server->loststatsrv) @@ -1680,7 +1682,7 @@ struct server *realm2server(struct realm *realm) { if (server->loststatsrv < best->loststatsrv) best = server; } - return best; + return best ? best : first; } void radsrv(struct request *rq) { -- cgit v1.1