]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Allow no listen sections in a virtual server
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 2 Mar 2018 07:20:09 +0000 (13:20 +0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 2 Mar 2018 07:20:09 +0000 (13:20 +0600)
The plan is to add a namespace registry with compilation callbacks, then we can error out if the namespace is invalid, and bitch about unhandled sections

src/main/virtual_servers.c

index 280a787189cec1811d838dae512b457c97b29a7a..386cc8c5522cda59a182e5c53a4a99bb86ea6aeb 100644 (file)
@@ -96,7 +96,8 @@ static int listen_parse(TALLOC_CTX *ctx, void *out, CONF_ITEM *ci, CONF_PARSER c
 static const CONF_PARSER server_config[] = {
        { FR_CONF_OFFSET("namespace", FR_TYPE_STRING, fr_virtual_server_t, namespace) },
 
-       { FR_CONF_OFFSET("listen", FR_TYPE_SUBSECTION | FR_TYPE_MULTI, fr_virtual_server_t, listener), \
+       { FR_CONF_OFFSET("listen", FR_TYPE_SUBSECTION | FR_TYPE_MULTI | FR_TYPE_OK_MISSING,
+                        fr_virtual_server_t, listener), \
                         .subcs_size = sizeof(fr_virtual_listen_t), .subcs_type = "fr_virtual_listen_t",
                         .func = listen_parse},
 
@@ -389,6 +390,12 @@ int virtual_servers_instantiate(void)
                listener = virtual_servers[i]->listener;
                listen_cnt = talloc_array_length(listener);
 
+               /*
+                *      Not all virtual servers have listeners,
+                *      some are just used to wrap unlang logic.
+                */
+               if (listen_cnt == 0) continue;
+
                DEBUG("Compiling policies in server %s { ... }", cf_section_name2(listener[0]->server_cs));
 
                for (j = 0; j < listen_cnt; j++) {