summaryrefslogtreecommitdiff
path: root/radsecproxy.c
diff options
context:
space:
mode:
authorFabian Mauchle <fabian.mauchle@switch.ch>2017-03-02 10:44:16 +0100
committerFabian Mauchle <fabian.mauchle@switch.ch>2017-03-16 11:16:58 +0100
commit6be11441945bf33f807568d8566dffc7fef9174f (patch)
tree42e1656d74a9e593e54a24e68a42c50145a6102d /radsecproxy.c
parent750a3811adb90c9727b11af1fb385862da8a6f60 (diff)
replace server states with enum
Conflicts: radsecproxy.c radsecproxy.h
Diffstat (limited to 'radsecproxy.c')
-rw-r--r--radsecproxy.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/radsecproxy.c b/radsecproxy.c
index 0337522..88efffa 100644
--- a/radsecproxy.c
+++ b/radsecproxy.c
@@ -1258,11 +1258,11 @@ struct clsrvconf *choosesrvconf(struct list *srvconfs) {
server = (struct clsrvconf *)entry->data;
if (!server->servers)
return server;
- if (server->servers->dynfailing)
+ if (server->servers->state == SERVER_STATE_FAILING)
continue;
if (!first)
first = server;
- if (!server->servers->connectionok && !server->servers->dynstartup)
+ if (server->servers->state == SERVER_STATE_STARTUP || server->servers->state == SERVER_STATE_RECONNECTING)
continue;
if (!server->servers->lostrqs)
return server;
@@ -1558,7 +1558,6 @@ void replyh(struct server *server, unsigned char *buf) {
struct tlv *attr;
struct list_node *node;
- server->connectionok = 1;
server->lostrqs = 0;
rqout = server->requests + buf[1];
@@ -1752,10 +1751,10 @@ void *clientwr(void *arg) {
#define ZZZ 900
+ server->state = SERVER_STATE_STARTUP;
if (server->dynamiclookuparg && !dynamicconfig(server)) {
dynconffail = 1;
- server->dynstartup = 0;
- server->dynfailing = 1;
+ server->state = SERVER_STATE_FAILING;
debug(DBG_WARN, "%s: dynamicconfig(%s: %s) failed, sleeping %ds",
__func__, server->conf->name, server->dynamiclookuparg, ZZZ);
sleep(ZZZ);
@@ -1766,7 +1765,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;
+ server->state = SERVER_STATE_FAILING;
sleep(ZZZ);
goto errexit;
}
@@ -1781,23 +1780,20 @@ void *clientwr(void *arg) {
if (conf->pdef->connecter) {
if (!conf->pdef->connecter(server, NULL, server->dynamiclookuparg ? 5 : 0, "clientwr")) {
if (server->dynamiclookuparg) {
- server->dynstartup = 0;
+ server->state = SERVER_STATE_FAILING;
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;
+ server->state = SERVER_STATE_FAILING;
goto errexit;
}
- } else
- server->connectionok = 1;
- server->dynstartup = 0;
+ }
+ server->state = SERVER_STATE_CONNECTED;
for (;;) {
pthread_mutex_lock(&server->newrq_mutex);
@@ -1835,7 +1831,7 @@ void *clientwr(void *arg) {
for (i = 0; i < MAX_REQUESTS; i++) {
if (server->clientrdgone) {
- server->dynfailing=1;
+ server->state = SERVER_STATE_FAILING;
pthread_join(clientrdth, NULL);
goto errexit;
}
@@ -1886,7 +1882,7 @@ void *clientwr(void *arg) {
conf->pdef->clientradput(server, rqout->rq->buf);
pthread_mutex_unlock(rqout->lock);
}
- if (conf->statusserver && server->connectionok) {
+ if (conf->statusserver && server->state == SERVER_STATE_CONNECTED) {
secs = server->lastrcv.tv_sec > laststatsrv.tv_sec ? server->lastrcv.tv_sec : laststatsrv.tv_sec;
gettimeofday(&now, NULL);
if (now.tv_sec - secs > STATUS_SERVER_PERIOD) {
@@ -2182,7 +2178,7 @@ struct list *createsubrealmservers(struct realm *realm, struct list *srvconfs) {
* the srvconfs list. */
if (addserver(srvconf)) {
srvconf->servers->dynamiclookuparg = stringcopy(realm->name, 0);
- srvconf->servers->dynstartup = 1;
+ srvconf->servers->state = SERVER_STATE_STARTUP;
debug(DBG_DBG, "%s: new client writer for %s",
__func__, srvconf->servers->conf->name);
if (pthread_create(&clientth, &pthread_attr, clientwr, (void *)(srvconf->servers))) {