From: Alan T. DeKok Date: Mon, 19 Jun 2017 20:45:25 +0000 (-0400) Subject: pass event list to fr_network_create() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c5a3d91ab8725f3f1bd79f03c7d07b2ff6cebaa;p=thirdparty%2Ffreeradius-server.git pass event list to fr_network_create() In preparation for single-threaded mode --- diff --git a/src/lib/io/network.c b/src/lib/io/network.c index 1650d1da27f..0f3667df0ec 100644 --- a/src/lib/io/network.c +++ b/src/lib/io/network.c @@ -562,12 +562,13 @@ static void fr_network_evfilt_user(UNUSED int kq, UNUSED struct kevent const *ke /** Create a network * * @param[in] ctx the talloc ctx + * @param[in] el the event list * @param[in] logger the destination for all logging messages * @return * - NULL on error * - fr_network_t on success */ -fr_network_t *fr_network_create(TALLOC_CTX *ctx, fr_log_t *logger) +fr_network_t *fr_network_create(TALLOC_CTX *ctx, fr_event_list_t *el, fr_log_t *logger) { fr_network_t *nr; @@ -577,13 +578,7 @@ fr_network_t *fr_network_create(TALLOC_CTX *ctx, fr_log_t *logger) return NULL; } - nr->el = fr_event_list_alloc(nr, NULL, NULL); - if (!nr->el) { - fr_strerror_printf("Failed creating event list: %s", fr_strerror()); - talloc_free(nr); - return NULL; - } - + nr->el = el; nr->log = logger; nr->kq = fr_event_list_kq(nr->el); diff --git a/src/lib/io/network.h b/src/lib/io/network.h index 82fdf88803c..c8355a792e8 100644 --- a/src/lib/io/network.h +++ b/src/lib/io/network.h @@ -33,8 +33,8 @@ extern "C" { typedef struct fr_network_t fr_network_t; -fr_network_t *fr_network_create(TALLOC_CTX *ctx, fr_log_t *logger); -void fr_network_exit(fr_network_t *nr); +fr_network_t *fr_network_create(TALLOC_CTX *ctx, fr_event_list_t *el, fr_log_t *logger) CC_HINT(nonnull(2,3));; +void fr_network_exit(fr_network_t *nr) CC_HINT(nonnull);; int fr_network_destroy(fr_network_t *nr) CC_HINT(nonnull); void fr_network(fr_network_t *nr) CC_HINT(nonnull); diff --git a/src/lib/io/schedule.c b/src/lib/io/schedule.c index a42d52ac9c1..8ca6307a3fd 100644 --- a/src/lib/io/schedule.c +++ b/src/lib/io/schedule.c @@ -221,6 +221,7 @@ static void *fr_schedule_network_thread(void *arg) fr_schedule_network_t *sn = arg; fr_schedule_t *sc = sn->sc; fr_schedule_child_status_t status = FR_CHILD_FAIL; + fr_event_list_t *el; fr_log(sc->log, L_INFO, "Network %d starting\n", sn->id); @@ -230,7 +231,14 @@ static void *fr_schedule_network_thread(void *arg) goto fail; } - sn->rc = fr_network_create(ctx, sc->log); + el = fr_event_list_alloc(ctx, NULL, NULL); + if (!el) { + fr_log(sc->log, L_ERR, "Network %d - Failed creating event list: %s", + sn->id, fr_strerror()); + goto fail; + } + + sn->rc = fr_network_create(ctx, el, sc->log); if (!sn->rc) { fr_log(sc->log, L_ERR, "Network %d - Failed creating network: %s", sn->id, fr_strerror()); goto fail;