]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
use macro for home server is dead
authorAlan T. DeKok <aland@freeradius.org>
Wed, 9 Nov 2022 18:52:28 +0000 (18:52 +0000)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 9 Nov 2022 18:52:28 +0000 (18:52 +0000)
src/include/realms.h
src/main/process.c
src/main/realms.c

index 2e14779a92c5f71835ed295fe7b337ef8da9660f..a5e078efb8b86154d5c5e42e3b4b4ebccb57b798 100644 (file)
@@ -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;
index be535bf13a2b3df0d7ed6bd23d3244f90dac6f4f..684c2f280f6ec7474c92e94bf2be504c4fc87efd 100644 (file)
@@ -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)) {
index f2441c1b698d332352fd28347ca44a311776e3fc..1771604edb37ffde118f780d0dfbd2383f7befae 100644 (file)
@@ -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;