From: Alan T. DeKok Date: Mon, 27 Jun 2011 12:52:54 +0000 (+0200) Subject: Home servers are unique by proto, too. X-Git-Tag: release_3_0_0_beta0~750 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d5dc23ede39d7880b339f0745dc0b75f2b4d2dc;p=thirdparty%2Ffreeradius-server.git Home servers are unique by proto, too. Check for duplicates, and print errors if there are duplicates --- diff --git a/src/main/realms.c b/src/main/realms.c index 86ba068c94f..38a869e9636 100644 --- a/src/main/realms.c +++ b/src/main/realms.c @@ -164,6 +164,11 @@ static int home_server_addr_cmp(const void *one, const void *two) if (a->port < b->port) return -1; if (a->port > b->port) return +1; +#ifdef WITH_TCP + if (a->proto < b->proto) return -1; + if (a->proto > b->proto) return +1; +#endif + rcode = fr_ipaddr_cmp(&a->src_ipaddr, &b->src_ipaddr); if (rcode != 0) return rcode; @@ -708,6 +713,19 @@ static int home_server_add(realm_config_t *rc, CONF_SECTION *cs) free(hs_srcipaddr); hs_srcipaddr = NULL; + if (rbtree_finddata(home_servers_byname, home) != NULL) { + cf_log_err(cf_sectiontoitem(cs), + "Duplicate home server name %s.", name2); + goto error; + } + + if (!home->server && + (rbtree_finddata(home_servers_byaddr, home) != NULL)) { + cf_log_err(cf_sectiontoitem(cs), + "Duplicate home server IP %s.", name2); + goto error; + } + if (!rbtree_insert(home_servers_byname, home)) { cf_log_err(cf_sectiontoitem(cs), "Internal error %d adding home server %s.",