From: Arran Cudbard-Bell Date: Tue, 9 Sep 2014 19:25:47 +0000 (-0400) Subject: Fix parenting of dual homeservers X-Git-Tag: release_3_0_5~580 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7847355a4712d82dcac598dee0edc57d8eb0558c;p=thirdparty%2Ffreeradius-server.git Fix parenting of dual homeservers --- diff --git a/src/include/realms.h b/src/include/realms.h index 97a2beb1f14..cf93e437242 100644 --- a/src/include/realms.h +++ b/src/include/realms.h @@ -155,12 +155,14 @@ typedef struct _realm { #endif } REALM; +typedef struct realm_config realm_config_t; + int realms_init(CONF_SECTION *config); void realms_free(void); REALM *realm_find(char const *name); /* name is from a packet */ REALM *realm_find2(char const *name); /* ... with name taken from realm_find */ void realm_home_server_sanitize(home_server_t *home, CONF_SECTION *cs); -int realm_home_server_add(home_server_t *home, CONF_SECTION *cs, int dual); +int realm_home_server_add(realm_config_t *rc, home_server_t *home, CONF_SECTION *cs, int dual); int realm_pool_add(home_pool_t *pool, CONF_SECTION *cs); void realm_pool_free(home_pool_t *pool); int realm_realm_add( REALM *r, CONF_SECTION *cs); diff --git a/src/main/realms.c b/src/main/realms.c index 876dbd0a7d0..03e3b57e511 100644 --- a/src/main/realms.c +++ b/src/main/realms.c @@ -46,7 +46,7 @@ static realm_regex_t *realms_regex = NULL; #endif /* HAVE_REGEX */ -typedef struct realm_config_t { +struct realm_config { CONF_SECTION *cs; uint32_t dead_time; uint32_t retry_count; @@ -54,7 +54,7 @@ typedef struct realm_config_t { bool dynamic; bool fallback; bool wake_all_if_all_dead; -} realm_config_t; +}; static realm_config_t *realm_config = NULL; static bool realms_initialized = false; @@ -697,11 +697,10 @@ static int home_server_add(realm_config_t *rc, CONF_SECTION *cs) hs_srcipaddr = NULL; - return realm_home_server_add(home, cs, dual); + return realm_home_server_add(rc, home, cs, dual); } - -int realm_home_server_add(home_server_t *home, CONF_SECTION *cs, int dual) +int realm_home_server_add(realm_config_t *rc, home_server_t *home, CONF_SECTION *cs, int dual) { const char *name2 = home->name; @@ -767,7 +766,7 @@ int realm_home_server_add(home_server_t *home, CONF_SECTION *cs, int dual) realm_home_server_sanitize(home, cs); if (dual) { - home_server_t *home2 = talloc(home, home_server_t); + home_server_t *home2 = talloc(rc, home_server_t); memcpy(home2, home, sizeof(*home2));