]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
refuse to start when no 'listen' sections are configured.
authorAlan T. DeKok <aland@freeradius.org>
Wed, 30 Apr 2025 17:12:11 +0000 (13:12 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 30 Apr 2025 17:27:54 +0000 (13:27 -0400)
It helps to fail with a descriptive error, rather than silently
doing the wrong thing.

src/lib/server/virtual_servers.c

index f3853465980c9e4f05fc00c7a6c8bc7f7f138a55..f48b24c2004e106c56bc9952c4bbaa5700780536 100644 (file)
@@ -1528,6 +1528,7 @@ static fr_dict_t const *virtual_server_local_dict(CONF_SECTION *server_cs, fr_di
 int virtual_servers_open(fr_schedule_t *sc)
 {
        size_t i, server_cnt = virtual_servers ? talloc_array_length(virtual_servers) : 0;
+       int opened = 0;
 
        fr_assert(virtual_servers);
 
@@ -1541,7 +1542,7 @@ int virtual_servers_open(fr_schedule_t *sc)
                listeners = virtual_servers[i]->listeners;
                listener_cnt = talloc_array_length(listeners);
 
-               for (j = 0; j < listener_cnt; j++) {
+               for (j = 0; j < listener_cnt; j++) {                    
                        fr_virtual_listen_t *listener = listeners[j];
 
                        fr_assert(listener != NULL);
@@ -1578,6 +1579,7 @@ int virtual_servers_open(fr_schedule_t *sc)
                                        return -1;
                                }
 
+                               opened++;
                        }
 
                        /*
@@ -1588,6 +1590,12 @@ int virtual_servers_open(fr_schedule_t *sc)
                }
        }
 
+       if (!opened) {
+               ERROR("There are no 'listen' sections defined.");
+               ERROR("Refusing to start, as the server will never process any packets.");
+               return -1;
+       }
+
        return 0;
 }