summaryrefslogtreecommitdiff
path: root/radsecproxy.c
diff options
context:
space:
mode:
authorFabian Mauchle <fabian.mauchle@switch.ch>2016-11-02 17:12:45 +0100
committerFabian Mauchle <fabian.mauchle@switch.ch>2017-08-06 20:34:56 +0200
commit14cac40266288157047c205d138d26ebcb042aa2 (patch)
tree7dc5c71b3025f3b712c818d87a2c591bcc6cc827 /radsecproxy.c
parent7dcefed3d7e9c1d90866a810838513efe007abed (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
Diffstat (limited to 'radsecproxy.c')
-rw-r--r--radsecproxy.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/radsecproxy.c b/radsecproxy.c
index 142d069..5bcbfe7 100644
--- a/radsecproxy.c
+++ b/radsecproxy.c
@@ -1767,6 +1767,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;
}
@@ -1780,9 +1781,9 @@ void *clientwr(void *arg) {
if (conf->pdef->connecter) {
if (!conf->pdef->connecter(server, NULL, server->dynamiclookuparg ? 5 : 0, "clientwr")) {
+ server->dynfailing = 1;
if (server->dynamiclookuparg) {
server->dynstartup = 0;
- server->dynfailing = 1;
debug(DBG_WARN, "%s: connect failed, sleeping %ds",
__func__, ZZZ);
sleep(ZZZ);
@@ -1792,6 +1793,7 @@ void *clientwr(void *arg) {
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
@@ -1834,6 +1836,7 @@ void *clientwr(void *arg) {
for (i = 0; i < MAX_REQUESTS; i++) {
if (server->clientrdgone) {
+ server->dynfailing=1;
if (conf->pdef->connecter)
pthread_join(clientrdth, NULL);
goto errexit;
@@ -1906,8 +1909,6 @@ errexit:
free(conf);
else
freeclsrvconf(conf);
- } else {
- conf->servers = NULL;
}
freeserver(server, 1);
return NULL;