From 750a3811adb90c9727b11af1fb385862da8a6f60 Mon Sep 17 00:00:00 2001 From: Fabian Mauchle Date: Wed, 2 Nov 2016 17:12:45 +0100 Subject: proposed fix for RADSECPROXY-71 never set clsrvconf->servers=null after it has been properly set up. set servers->dynfailing=1 instead Conflicts: radsecproxy.c --- radsecproxy.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/radsecproxy.c b/radsecproxy.c index fe76f7c..0337522 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -1766,6 +1766,7 @@ void *clientwr(void *arg) { * dynamicconfig() above? */ if (!resolvehostports(conf->hostports, conf->hostaf, conf->pdef->socktype)) { debug(DBG_WARN, "%s: resolve failed, sleeping %ds", __func__, ZZZ); + server->dynfailing=1; sleep(ZZZ); goto errexit; } @@ -1781,16 +1782,17 @@ void *clientwr(void *arg) { if (!conf->pdef->connecter(server, NULL, server->dynamiclookuparg ? 5 : 0, "clientwr")) { if (server->dynamiclookuparg) { server->dynstartup = 0; - server->dynfailing = 1; debug(DBG_WARN, "%s: connect failed, sleeping %ds", __func__, ZZZ); sleep(ZZZ); } + server->dynfailing = 1; goto errexit; } server->connectionok = 1; if (pthread_create(&clientrdth, &pthread_attr, conf->pdef->clientconnreader, (void *)server)) { debugerrno(errno, DBG_ERR, "clientwr: pthread_create failed"); + server->dynfailing=1; goto errexit; } } else @@ -1833,6 +1835,7 @@ void *clientwr(void *arg) { for (i = 0; i < MAX_REQUESTS; i++) { if (server->clientrdgone) { + server->dynfailing=1; pthread_join(clientrdth, NULL); goto errexit; } -- cgit v1.1