From: Alan T. DeKok Date: Wed, 10 Jan 2018 20:52:32 +0000 (-0500) Subject: send fr_listen_t to network, not whole fr_network_socket_t X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4324f99be6deee1f5e701577f8f279bd2b4eac55;p=thirdparty%2Ffreeradius-server.git send fr_listen_t to network, not whole fr_network_socket_t the socket_t is too large, and unnecessary. we can just send the one pointer we care about --- diff --git a/src/lib/io/network.c b/src/lib/io/network.c index 65bb6f2744b..1ac0e5e2485 100644 --- a/src/lib/io/network.c +++ b/src/lib/io/network.c @@ -636,13 +636,13 @@ static void fr_network_socket_callback(void *ctx, void const *data, size_t data_ fr_app_io_t const *app_io; size_t size; - rad_assert(data_size == sizeof(*s)); + rad_assert(data_size == sizeof(s->listen)); - if (data_size != sizeof(*s)) return; + if (data_size != sizeof(s->listen)) return; - s = talloc(nr, fr_network_socket_t); + s = talloc_zero(nr, fr_network_socket_t); rad_assert(s != NULL); - memcpy(s, data, sizeof(*s)); + memcpy(&s->listen, data, sizeof(s->listen)); MEM(s->waiting = fr_heap_create(waiting_cmp, offsetof(fr_channel_data_t, channel.heap_id))); FR_DLIST_INIT(s->entry); @@ -705,13 +705,13 @@ static void fr_network_directory_callback(void *ctx, void const *data, size_t da fr_app_io_t const *app_io; fr_event_vnode_func_t funcs = { .extend = fr_network_vnode_extend }; - rad_assert(data_size == sizeof(*s)); + rad_assert(data_size == sizeof(s->listen)); - if (data_size != sizeof(*s)) return; + if (data_size != sizeof(s->listen)) return; - s = talloc(nr, fr_network_socket_t); + s = talloc_zero(nr, fr_network_socket_t); rad_assert(s != NULL); - memcpy(s, data, sizeof(*s)); + memcpy(&s->listen, data, sizeof(s->listen)); MEM(s->waiting = fr_heap_create(waiting_cmp, offsetof(fr_channel_data_t, channel.heap_id))); FR_DLIST_INIT(s->entry); @@ -1184,13 +1184,9 @@ void fr_network_exit(fr_network_t *nr) int fr_network_socket_add(fr_network_t *nr, fr_listen_t const *listen) { int rcode; - fr_network_socket_t m; - - memset(&m, 0, sizeof(m)); - m.listen = listen; PTHREAD_MUTEX_LOCK(&nr->mutex); - rcode = fr_control_message_send(nr->control, nr->rb, FR_CONTROL_ID_SOCKET, &m, sizeof(m)); + rcode = fr_control_message_send(nr->control, nr->rb, FR_CONTROL_ID_SOCKET, &listen, sizeof(listen)); PTHREAD_MUTEX_UNLOCK(&nr->mutex); return rcode; @@ -1204,13 +1200,9 @@ int fr_network_socket_add(fr_network_t *nr, fr_listen_t const *listen) int fr_network_directory_add(fr_network_t *nr, fr_listen_t const *listen) { int rcode; - fr_network_socket_t m; - - memset(&m, 0, sizeof(m)); - m.listen = listen; PTHREAD_MUTEX_LOCK(&nr->mutex); - rcode = fr_control_message_send(nr->control, nr->rb, FR_CONTROL_ID_DIRECTORY, &m, sizeof(m)); + rcode = fr_control_message_send(nr->control, nr->rb, FR_CONTROL_ID_DIRECTORY, &listen, sizeof(listen)); PTHREAD_MUTEX_UNLOCK(&nr->mutex); return rcode;