From c0b61dd114ad7a1ba746f5d9efd6a9e8b39ef1bd Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Wed, 9 Nov 2022 18:52:28 +0000 Subject: [PATCH] use macro for home server is dead --- src/include/realms.h | 2 ++ src/main/process.c | 12 ++++++------ src/main/realms.c | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/include/realms.h b/src/include/realms.h index 2e14779a92..a5e078efb8 100644 --- a/src/include/realms.h +++ b/src/include/realms.h @@ -44,6 +44,8 @@ typedef enum { HOME_STATE_CONNECTION_FAIL, } home_state_t; +#define HOME_SERVER_IS_DEAD(_x) (((_x)->state == HOME_STATE_IS_DEAD) || ((_x)->state == HOME_STATE_ADMIN_DOWN) || ((_x)->state == HOME_STATE_CONNECTION_FAIL)) + typedef struct fr_socket_limit_t { uint32_t max_connections; uint32_t num_connections; diff --git a/src/main/process.c b/src/main/process.c index be535bf13a..684c2f280f 100644 --- a/src/main/process.c +++ b/src/main/process.c @@ -1665,7 +1665,7 @@ static void request_running(REQUEST *request, int action) if (request->home_server && request->home_server->virtual_server) goto req_finished; if (request->home_pool && request->home_server && - (request->home_server->state >= HOME_STATE_IS_DEAD)) { + HOME_SERVER_IS_DEAD(request->home_server)) { VALUE_PAIR *vp; REALM *realm = NULL; home_server_t *home = NULL; @@ -3121,7 +3121,7 @@ static int request_will_proxy(REQUEST *request) * The home server is alive (or may be alive). * Send the packet to the IP. */ - if (home->state < HOME_STATE_IS_DEAD) goto do_home; + if (!HOME_SERVER_IS_DEAD(home)) goto do_home; /* * The home server is dead. If you wanted @@ -3169,7 +3169,7 @@ static int request_will_proxy(REQUEST *request) * The home server is alive (or may be alive). * Send the packet to the IP. */ - if (home->state < HOME_STATE_IS_DEAD) goto do_home; + if (!HOME_SERVER_IS_DEAD(home)) goto do_home; /* * The home server is dead. If you wanted @@ -3656,7 +3656,7 @@ static void request_ping(REQUEST *request, int action) * * If it's zombie, we mark it alive immediately. */ - if ((home->state >= HOME_STATE_IS_DEAD) && + if (HOME_SERVER_IS_DEAD(home) && (home->num_received_pings < home->num_pings_to_alive)) { return; } @@ -4077,7 +4077,7 @@ static void proxy_wait_for_reply(REQUEST *request, int action) * If the listener is known or frozen, use it for * retransmits. */ - if ((home->state >= HOME_STATE_IS_DEAD) || + if (HOME_SERVER_IS_DEAD(home) || !request->proxy_listener || (request->proxy_listener->status >= RAD_LISTEN_STATUS_EOL)) { request_proxy_anew(request); @@ -4557,7 +4557,7 @@ static void coa_retransmit(REQUEST *request) * Don't do fail-over. This is a 3.1 feature. */ if (!request->home_server || - (request->home_server->state >= HOME_STATE_IS_DEAD) || + HOME_SERVER_IS_DEAD(request->home_server) || request->proxy_reply || !request->proxy_listener || (request->proxy_listener->status >= RAD_LISTEN_STATUS_EOL)) { diff --git a/src/main/realms.c b/src/main/realms.c index f2441c1b69..1771604edb 100644 --- a/src/main/realms.c +++ b/src/main/realms.c @@ -2647,7 +2647,7 @@ home_server_t *home_server_ldb(char const *realmname, * Home servers that are unknown, alive, or zombie * are used for proxying. */ - if (home->state >= HOME_STATE_IS_DEAD) { + if (HOME_SERVER_IS_DEAD(home)) { continue; } @@ -2812,7 +2812,7 @@ home_server_t *home_server_ldb(char const *realmname, if (!home) continue; - if ((home->state >= HOME_STATE_IS_DEAD) && + if (HOME_SERVER_IS_DEAD(home) && (home->ping_check == HOME_PING_CHECK_NONE)) { home->state = HOME_STATE_ALIVE; home->response_timeouts = 0; -- 2.47.3