diff options
author | Fabian Mauchle <fabian.mauchle@switch.ch> | 2016-11-02 17:12:45 +0100 |
---|---|---|
committer | Fabian Mauchle <fabian.mauchle@switch.ch> | 2017-03-16 11:15:06 +0100 |
commit | 750a3811adb90c9727b11af1fb385862da8a6f60 (patch) | |
tree | ac2e453ac54596646556c2503b918ad8f4746319 | |
parent | 3d9be8431e7644e440c58b7132563db0ace0267b (diff) |
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
-rw-r--r-- | radsecproxy.c | 5 |
1 files changed, 4 insertions, 1 deletions
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; } |