From ab21b28ecb398989eef1bb8426a7a500c94691a0 Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Wed, 12 Aug 2009 14:15:58 +0200 Subject: [PATCH] Look up home servers by type, too. --- src/include/realms.h | 2 +- src/main/client.c | 5 +++-- src/main/realms.c | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/include/realms.h b/src/include/realms.h index 34d22a6..29cb7f3 100644 --- a/src/include/realms.h +++ b/src/include/realms.h @@ -132,7 +132,7 @@ home_server *home_server_ldb(const char *realmname, home_pool_t *pool, REQUEST * home_server *home_server_find(fr_ipaddr_t *ipaddr, int port); int home_server_create_listeners(void *head); #ifdef WITH_COA -home_server *home_server_byname(const char *name); +home_server *home_server_byname(const char *name, int type); #endif #ifdef WITH_STATS home_server *home_server_bynumber(int number); diff --git a/src/main/client.c b/src/main/client.c index f099097..dc7a905 100644 --- a/src/main/client.c +++ b/src/main/client.c @@ -717,9 +717,10 @@ static RADCLIENT *client_parse(CONF_SECTION *cs, int in_server) if (c->coa_name) { c->coa_pool = home_pool_byname(c->coa_name, HOME_TYPE_COA); if (!c->coa_pool) { - c->coa_server = home_server_byname(c->coa_name); + c->coa_server = home_server_byname(c->coa_name, + HOME_TYPE_COA); } - if (!c->coa_server) { + if (!c->coa_pool && !c->coa_server) { client_free(c); cf_log_err(cf_sectiontoitem(cs), "No such home_server or home_server_pool \"%s\"", c->coa_name); return NULL; diff --git a/src/main/realms.c b/src/main/realms.c index a3c11e2..a0cb796 100644 --- a/src/main/realms.c +++ b/src/main/realms.c @@ -2139,11 +2139,12 @@ home_server *home_server_find(fr_ipaddr_t *ipaddr, int port) } #ifdef WITH_COA -home_server *home_server_byname(const char *name) +home_server *home_server_byname(const char *name, int type) { home_server myhome; memset(&myhome, 0, sizeof(myhome)); + myhome.type = type; myhome.name = name; return rbtree_finddata(home_servers_byname, &myhome); -- 2.1.4