]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
prefer exact match to wildcard match
authorAlan T. DeKok <aland@freeradius.org>
Thu, 2 May 2019 20:03:41 +0000 (16:03 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 2 May 2019 20:03:41 +0000 (16:03 -0400)
src/lib/server/virtual_servers.c

index 4b2c0827379d662ecfc363f819f92ef5d5b442d2..8e6437d689dadff6553cf1187034e51bb280c95b 100644 (file)
@@ -1238,24 +1238,25 @@ int virtual_server_section_component(rlm_components_t *component, char const *na
        rad_assert(server_section_name_tree != NULL);
 
        /*
-        *      Look up the wildcard name first.
+        *      Look up the specific name first.  That way we can
+        *      define both "accounting on", and "accounting *".
         */
        if (name2 != CF_IDENT_ANY) {
                entry = rbtree_finddata(server_section_name_tree,
                                        &(virtual_server_compile_t) {
                                                .name = name1,
-                                               .name2 = CF_IDENT_ANY,
+                                               .name2 = name2,
                                        });
                if (entry) goto done;
        }
 
        /*
-        *      Then the specific name.
+        *      Then look up the wildcard, if we didn't find any matching name2.
         */
        entry = rbtree_finddata(server_section_name_tree,
                                &(virtual_server_compile_t) {
                                        .name = name1,
-                                       .name2 = name2,
+                                       .name2 = CF_IDENT_ANY,
                                });
        if (!entry) return -1;