From: Arran Cudbard-Bell Date: Sat, 27 Jun 2015 01:37:17 +0000 (-0400) Subject: Use talloc for fifo buffers X-Git-Tag: release_3_0_9~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90c286de98087ba41b21a46ec8177bdc4f2be6c5;p=thirdparty%2Ffreeradius-server.git Use talloc for fifo buffers --- diff --git a/src/include/libradius.h b/src/include/libradius.h index 83fc2ea6966..e032ff8c5d7 100644 --- a/src/include/libradius.h +++ b/src/include/libradius.h @@ -902,7 +902,7 @@ int rbtree_walk(rbtree_t *tree, rb_order_t order, rb_walker_t compare, void *co */ typedef struct fr_fifo_t fr_fifo_t; typedef void (*fr_fifo_free_t)(void *); -fr_fifo_t *fr_fifo_create(int max_entries, fr_fifo_free_t freeNode); +fr_fifo_t *fr_fifo_create(TALLOC_CTX *ctx, int max_entries, fr_fifo_free_t freeNode); void fr_fifo_free(fr_fifo_t *fi); int fr_fifo_push(fr_fifo_t *fi, void *data); void *fr_fifo_pop(fr_fifo_t *fi); diff --git a/src/lib/fifo.c b/src/lib/fifo.c index b71fc5113bb..8c7e0b62458 100644 --- a/src/lib/fifo.c +++ b/src/lib/fifo.c @@ -36,21 +36,17 @@ struct fr_fifo_t { }; -fr_fifo_t *fr_fifo_create(int max, fr_fifo_free_t freeNode) +fr_fifo_t *fr_fifo_create(TALLOC_CTX *ctx, int max, fr_fifo_free_t freeNode) { fr_fifo_t *fi; if ((max < 2) || (max > (1024 * 1024))) return NULL; - fi = malloc(sizeof(*fi) + (sizeof(fi->data[0])*max)); + fi = talloc_zero_size(ctx, (sizeof(*fi) + (sizeof(fi->data[0])*max))); if (!fi) return NULL; - - memset(fi, 0, sizeof(*fi)); + talloc_set_type(fi, fr_fifo_t); fi->max = max; - fi->first = 0; - fi->last = 0; - fi->num = 0; fi->freeNode = freeNode; return fi; @@ -77,7 +73,7 @@ void fr_fifo_free(fr_fifo_t *fi) } memset(fi, 0, sizeof(*fi)); - free(fi); + talloc_free(fi); } int fr_fifo_push(fr_fifo_t *fi, void *data) @@ -137,7 +133,7 @@ int main(int argc, char **argv) int i, j, array[MAX]; fr_fifo_t *fi; - fi = fr_fifo_create(MAX, NULL); + fi = fr_fifo_create(NULL, MAX, NULL); if (!fi) fr_exit(1); for (j = 0; j < 5; j++) { diff --git a/src/main/client.c b/src/main/client.c index be53bf1b20e..f12650bd573 100644 --- a/src/main/client.c +++ b/src/main/client.c @@ -71,7 +71,7 @@ void client_free(RADCLIENT *client) time_t now; if (!deleted_clients) { - deleted_clients = fr_fifo_create(1024, (void (*)(void *))client_free); + deleted_clients = fr_fifo_create(NULL, 1024, (void (*)(void *))client_free); if (!deleted_clients) return; /* MEMLEAK */ } diff --git a/src/main/threads.c b/src/main/threads.c index 0377ada590a..14a773aa482 100644 --- a/src/main/threads.c +++ b/src/main/threads.c @@ -1008,7 +1008,7 @@ int thread_pool_init(CONF_SECTION *cs, bool *spawn_flag) * Allocate multiple fifos. */ for (i = 0; i < RAD_LISTEN_MAX; i++) { - thread_pool.fifo[i] = fr_fifo_create(thread_pool.max_queue_size, NULL); + thread_pool.fifo[i] = fr_fifo_create(NULL, thread_pool.max_queue_size, NULL); if (!thread_pool.fifo[i]) { ERROR("FATAL: Failed to set up request fifo"); return -1;