From: Alan T. DeKok Date: Thu, 20 Sep 2018 17:03:45 +0000 (-0400) Subject: more rename 'listen' to 'li', and fix const complaints X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6558e9dac45f5efa3e1d7e7219ca9a2f2e641e26;p=thirdparty%2Ffreeradius-server.git more rename 'listen' to 'li', and fix const complaints --- diff --git a/src/lib/io/channel.h b/src/lib/io/channel.h index 83d999122e0..801783c22b5 100644 --- a/src/lib/io/channel.h +++ b/src/lib/io/channel.h @@ -113,7 +113,7 @@ typedef struct fr_channel_data_t { //!< information, and other proto_* specific information //!< that needs to be passed to the request. - fr_listen_t const *listen; //!< for tracking packet transport, etc. + fr_listen_t *listen; //!< for tracking packet transport, etc. } fr_channel_data_t; #define PRIORITY_NOW (1 << 16) diff --git a/src/lib/io/listen.h b/src/lib/io/listen.h index 9a5c78fca54..67f551a954f 100644 --- a/src/lib/io/listen.h +++ b/src/lib/io/listen.h @@ -51,7 +51,7 @@ struct fr_async_t { fr_channel_t *channel; void *packet_ctx; - fr_listen_t const *listen; //!< How we received this request, + fr_listen_t *listen; //!< How we received this request, //!< and how we'll send the reply. uint32_t priority; bool detached; //!< if detached, we don't send real replies diff --git a/src/lib/io/master.h b/src/lib/io/master.h index e4a7887e323..a69a515daa9 100644 --- a/src/lib/io/master.h +++ b/src/lib/io/master.h @@ -116,7 +116,7 @@ typedef struct fr_io_instance_t { fr_heap_t *pending_clients; //!< heap of pending clients fr_heap_t *alive_clients; //!< heap of active clients - fr_listen_t const *listen; //!< The master IO path + fr_listen_t *listen; //!< The master IO path fr_listen_t *child; //!< The child IO path fr_schedule_t *sc; //!< the scheduler } fr_io_instance_t; diff --git a/src/lib/io/network.c b/src/lib/io/network.c index ffc00059a8f..0823f181df0 100644 --- a/src/lib/io/network.c +++ b/src/lib/io/network.c @@ -80,7 +80,7 @@ typedef struct fr_network_socket_t { bool dead; //!< is it dead? size_t outstanding; //!< number of outstanding packets sent to the worker - fr_listen_t const *listen; //!< I/O ctx and functions. + fr_listen_t *listen; //!< I/O ctx and functions. fr_message_set_t *ms; //!< message buffers for this socket. fr_channel_data_t *cd; //!< cached in case of allocation & read error @@ -600,7 +600,7 @@ static void fr_network_error(UNUSED fr_event_list_t *el, UNUSED int sockfd, UNUS static void fr_network_write(UNUSED fr_event_list_t *el, UNUSED int sockfd, UNUSED int flags, void *ctx) { fr_network_socket_t *s = ctx; - fr_listen_t const *listen = s->listen; + fr_listen_t *li = s->listen; fr_network_t *nr = s->nr; fr_channel_data_t *cd; @@ -623,10 +623,10 @@ static void fr_network_write(UNUSED fr_event_list_t *el, UNUSED int sockfd, UNUS cd = fr_heap_pop(s->waiting)) { int rcode; - rad_assert(listen == cd->listen); + rad_assert(li == cd->listen); rad_assert(cd->m.status == FR_MESSAGE_LOCALIZED); - rcode = listen->app_io->write(listen->app_io_instance, cd->packet_ctx, + rcode = li->app_io->write(li->app_io_instance, cd->packet_ctx, cd->reply.request_time, cd->m.data, cd->m.data_size, 0); if (rcode < 0) { @@ -1167,17 +1167,17 @@ static void fr_network_post_event(UNUSED fr_event_list_t *el, UNUSED struct time while ((cd = fr_heap_pop(nr->replies)) != NULL) { ssize_t rcode; - fr_listen_t const *listen; + fr_listen_t *li; fr_message_t *lm; fr_network_socket_t my_socket, *s; - listen = cd->listen; + li = cd->listen; /* * @todo - cache this somewhere so we don't need * to do an rbtree lookup for every packet. */ - my_socket.listen = listen; + my_socket.listen = li; s = rbtree_finddata(nr->sockets, &my_socket); /* @@ -1243,7 +1243,7 @@ static void fr_network_post_event(UNUSED fr_event_list_t *el, UNUSED struct time * The write function is responsible for ensuring * that NAKs are not written to the network. */ - rcode = listen->app_io->write(listen->app_io_instance, cd->packet_ctx, + rcode = li->app_io->write(li->app_io_instance, cd->packet_ctx, cd->reply.request_time, cd->m.data, cd->m.data_size, 0); if (rcode < 0) { @@ -1286,7 +1286,7 @@ static void fr_network_post_event(UNUSED fr_event_list_t *el, UNUSED struct time PERROR("Failed writing to socket %d", s->fd); error: fr_message_done(&cd->m); - if (listen->app_io->error) listen->app_io->error(listen->app_io_instance); + if (li->app_io->error) li->app_io->error(li->app_io_instance); fr_network_socket_dead(nr, s); continue; @@ -1364,29 +1364,29 @@ void fr_network_exit(fr_network_t *nr) /** Add a fr_listen_t to a network * * @param nr the network - * @param listen Functions and context. + * @param li the listener */ -int fr_network_listen_add(fr_network_t *nr, fr_listen_t const *listen) +int fr_network_listen_add(fr_network_t *nr, fr_listen_t *li) { fr_ring_buffer_t *rb; rb = fr_network_rb_init(); if (!rb) return -1; - return fr_control_message_send(nr->control, rb, FR_CONTROL_ID_SOCKET, &listen, sizeof(listen)); + return fr_control_message_send(nr->control, rb, FR_CONTROL_ID_SOCKET, &li, sizeof(li)); } /** Delete a socket from a network. MUST be called only by the listener itself!. * * @param nr the network - * @param listen Functions and context. + * @param li the listener */ -int fr_network_socket_delete(fr_network_t *nr, fr_listen_t const *listen) +int fr_network_socket_delete(fr_network_t *nr, fr_listen_t *li) { fr_network_socket_t *s, my_socket; - my_socket.listen = listen; + my_socket.listen = li; s = rbtree_finddata(nr->sockets, &my_socket); if (!s) { return -1; @@ -1400,16 +1400,16 @@ int fr_network_socket_delete(fr_network_t *nr, fr_listen_t const *listen) /** Add a "watch directory" call to a network * * @param nr the network - * @param listen Functions and context. + * @param li the listener */ -int fr_network_directory_add(fr_network_t *nr, fr_listen_t const *listen) +int fr_network_directory_add(fr_network_t *nr, fr_listen_t *li) { fr_ring_buffer_t *rb; rb = fr_network_rb_init(); if (!rb) return -1; - return fr_control_message_send(nr->control, rb, FR_CONTROL_ID_DIRECTORY, &listen, sizeof(listen)); + return fr_control_message_send(nr->control, rb, FR_CONTROL_ID_DIRECTORY, &li, sizeof(li)); } /** Add a worker to a network @@ -1433,16 +1433,16 @@ int fr_network_worker_add(fr_network_t *nr, fr_worker_t *worker) /** Signal the network to read from a listener * * @param nr the network - * @param listen the listener to read from + * @param li the listener to read from */ -void fr_network_listen_read(fr_network_t *nr, fr_listen_t const *listen) +void fr_network_listen_read(fr_network_t *nr, fr_listen_t *li) { fr_network_socket_t my_socket, *s; (void) talloc_get_type_abort(nr, fr_network_t); - (void) talloc_get_type_abort_const(listen, fr_listen_t); + (void) talloc_get_type_abort_const(li, fr_listen_t); - my_socket.listen = listen; + my_socket.listen = li; s = rbtree_finddata(nr->sockets, &my_socket); if (!s) return; @@ -1455,7 +1455,7 @@ void fr_network_listen_read(fr_network_t *nr, fr_listen_t const *listen) /** Inject a packet for a listener * * @param nr the network - * @param listen the listener where the packet is being injected + * @param li the listener where the packet is being injected * @param packet the packet to be injected * @param packet_len the length of the packet * @param recv_time when the packet was received. @@ -1463,7 +1463,7 @@ void fr_network_listen_read(fr_network_t *nr, fr_listen_t const *listen) * - <0 on error * - 0 on success */ -int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *listen, uint8_t const *packet, size_t packet_len, fr_time_t recv_time) +int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *li, uint8_t const *packet, size_t packet_len, fr_time_t recv_time) { fr_ring_buffer_t *rb; fr_network_inject_t my_inject; @@ -1472,14 +1472,14 @@ int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *listen, uint8_t cons if (!rb) return -1; (void) talloc_get_type_abort(nr, fr_network_t); - (void) talloc_get_type_abort(listen, fr_listen_t); + (void) talloc_get_type_abort(li, fr_listen_t); /* * Can't inject to injection-less destinations. */ - if (!listen->app_io->inject) return -1; + if (!li->app_io->inject) return -1; - my_inject.listen = listen; + my_inject.listen = li; my_inject.packet = talloc_memdup(NULL, packet, packet_len); my_inject.packet_len = packet_len; my_inject.recv_time = recv_time; diff --git a/src/lib/io/network.h b/src/lib/io/network.h index 7328e5b3034..a19af45fe96 100644 --- a/src/lib/io/network.h +++ b/src/lib/io/network.h @@ -38,12 +38,12 @@ 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); -int fr_network_listen_add(fr_network_t *nr, fr_listen_t const *io) CC_HINT(nonnull); -int fr_network_socket_delete(fr_network_t *nr, fr_listen_t const *listen); -int fr_network_directory_add(fr_network_t *nr, fr_listen_t const *listen) CC_HINT(nonnull); +int fr_network_listen_add(fr_network_t *nr, fr_listen_t *li) CC_HINT(nonnull); +int fr_network_socket_delete(fr_network_t *nr, fr_listen_t *li); +int fr_network_directory_add(fr_network_t *nr, fr_listen_t *li) CC_HINT(nonnull); int fr_network_worker_add(fr_network_t *nr, fr_worker_t *worker) CC_HINT(nonnull); -void fr_network_listen_read(fr_network_t *nr, fr_listen_t const *listen) CC_HINT(nonnull); -int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *listen, uint8_t const *packet, size_t packet_len, fr_time_t recv_time); +void fr_network_listen_read(fr_network_t *nr, fr_listen_t *li) CC_HINT(nonnull); +int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *li, uint8_t const *packet, size_t packet_len, fr_time_t recv_time); int fr_network_stats(fr_network_t const *nr, int num, uint64_t *stats) CC_HINT(nonnull); extern fr_cmd_table_t cmd_network_table[]; diff --git a/src/lib/io/schedule.c b/src/lib/io/schedule.c index bb9d632129c..12cef5e4b1c 100644 --- a/src/lib/io/schedule.c +++ b/src/lib/io/schedule.c @@ -684,12 +684,12 @@ done: /** Add a fr_listen_t to a scheduler. * * @param[in] sc the scheduler - * @param[in] io the ctx and callbacks for the transport. + * @param[in] li the ctx and callbacks for the transport. * @return * - NULL on error * - the fr_network_t that the socket was added to. */ -fr_network_t *fr_schedule_listen_add(fr_schedule_t *sc, fr_listen_t const *io) +fr_network_t *fr_schedule_listen_add(fr_schedule_t *sc, fr_listen_t *li) { fr_network_t *nr; @@ -701,7 +701,7 @@ fr_network_t *fr_schedule_listen_add(fr_schedule_t *sc, fr_listen_t const *io) nr = sc->sn->nr; } - if (fr_network_listen_add(nr, io) < 0) return NULL; + if (fr_network_listen_add(nr, li) < 0) return NULL; return nr; } @@ -709,12 +709,12 @@ fr_network_t *fr_schedule_listen_add(fr_schedule_t *sc, fr_listen_t const *io) /** Add a directory NOTE_EXTEND to a scheduler. * * @param[in] sc the scheduler - * @param[in] io the ctx and callbacks for the transport. + * @param[in] li the ctx and callbacks for the transport. * @return * - NULL on error * - the fr_network_t that the socket was added to. */ -fr_network_t *fr_schedule_directory_add(fr_schedule_t *sc, fr_listen_t const *io) +fr_network_t *fr_schedule_directory_add(fr_schedule_t *sc, fr_listen_t *li) { fr_network_t *nr; @@ -726,7 +726,7 @@ fr_network_t *fr_schedule_directory_add(fr_schedule_t *sc, fr_listen_t const *io nr = sc->sn->nr; } - if (fr_network_directory_add(nr, io) < 0) return NULL; + if (fr_network_directory_add(nr, li) < 0) return NULL; return nr; } diff --git a/src/lib/io/schedule.h b/src/lib/io/schedule.h index 9fc92cd1e22..fe9da4a6b1f 100644 --- a/src/lib/io/schedule.h +++ b/src/lib/io/schedule.h @@ -56,8 +56,8 @@ fr_schedule_t *fr_schedule_create(TALLOC_CTX *ctx, fr_event_list_t *el, fr_log_ /* schedulers are async, so there's no fr_schedule_run() */ int fr_schedule_destroy(fr_schedule_t *sc); -fr_network_t *fr_schedule_listen_add(fr_schedule_t *sc, fr_listen_t const *io) CC_HINT(nonnull); -fr_network_t *fr_schedule_directory_add(fr_schedule_t *sc, fr_listen_t const *io) CC_HINT(nonnull); +fr_network_t *fr_schedule_listen_add(fr_schedule_t *sc, fr_listen_t *li) CC_HINT(nonnull); +fr_network_t *fr_schedule_directory_add(fr_schedule_t *sc, fr_listen_t *li) CC_HINT(nonnull); #ifdef __cplusplus } #endif diff --git a/src/modules/proto_control/proto_control_unix.c b/src/modules/proto_control/proto_control_unix.c index f1284ea5bf7..803cc4290c9 100644 --- a/src/modules/proto_control/proto_control_unix.c +++ b/src/modules/proto_control/proto_control_unix.c @@ -367,10 +367,6 @@ static int mod_close(fr_listen_t *li) close(inst->sockfd); inst->sockfd = -1; - if (inst->stdout) fclose(inst->stdout); - if (inst->stderr) fclose(inst->stderr); - if (inst->misc) fclose(inst->misc); - return 0; } @@ -1016,6 +1012,15 @@ static int getpeereid(int s, uid_t *euid, gid_t *egid) #endif /* HAVE_GETPEEREID */ +static int _close_cookies(proto_control_unix_t *inst) +{ + if (inst->stdout) fclose(inst->stdout); + if (inst->stderr) fclose(inst->stderr); + if (inst->misc) fclose(inst->misc); + + return 0; +} + /** Set the file descriptor for this socket. * */ @@ -1109,6 +1114,8 @@ static int mod_fd_set(fr_listen_t *li, int fd) inst->misc = fopencookie(inst, "w", io); #endif + talloc_set_destructor(inst, _close_cookies); + /* * @todo - if we move to a binary protocol, then we * should change this to a small (i.e. 1K) buffer. The diff --git a/src/modules/proto_detail/proto_detail.h b/src/modules/proto_detail/proto_detail.h index 53c0b34676b..218bd6abfbf 100644 --- a/src/modules/proto_detail/proto_detail.h +++ b/src/modules/proto_detail/proto_detail.h @@ -62,7 +62,7 @@ typedef struct proto_detail_t { fr_schedule_t *sc; //!< the scheduler, where we insert new readers - fr_listen_t const *listen; //!< The listener structure which describes + fr_listen_t *listen; //!< The listener structure which describes //!< the I/O path. #ifdef HAVE_PTHREAD_H pthread_mutex_t worker_mutex; //!< for the workers