From: Arran Cudbard-Bell Date: Sun, 27 Nov 2016 21:47:48 +0000 (-0500) Subject: fr_event_fd_insert should return an int like every other function in that api X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6358dc5cbcbec84393fb90374e5e16baecef75d5;p=thirdparty%2Ffreeradius-server.git fr_event_fd_insert should return an int like every other function in that api --- diff --git a/src/include/event.h b/src/include/event.h index 70c893c8ab8..69127543071 100644 --- a/src/include/event.h +++ b/src/include/event.h @@ -82,11 +82,11 @@ int fr_event_list_kq(fr_event_list_t *el); int fr_event_list_time(struct timeval *when, fr_event_list_t *el); int fr_event_fd_delete(fr_event_list_t *el, int fd); -fr_event_fd_t *fr_event_fd_insert(fr_event_list_t *el, int fd, - fr_event_fd_handler_t read, - fr_event_fd_handler_t write, - fr_event_fd_handler_t error, - void *ctx); +int fr_event_fd_insert(fr_event_list_t *el, int fd, + fr_event_fd_handler_t read, + fr_event_fd_handler_t write, + fr_event_fd_handler_t error, + void *ctx); int fr_event_timer_delete(fr_event_list_t *el, fr_event_timer_t **parent); int fr_event_timer_insert(fr_event_list_t *el, diff --git a/src/lib/event.c b/src/lib/event.c index ab421090da4..703e25cbcab 100644 --- a/src/lib/event.c +++ b/src/lib/event.c @@ -279,37 +279,39 @@ static int _fr_event_fd_free(fr_event_fd_t *ef) * @param[in] write function to call when fd is writable. * @param[in] error function to call when an error occurs on the fd. * @param[in] ctx to pass to handler. - * @return a handle to use for future deletion of the file descriptor event. + * @return + * - 0 on succes. + * - -1 on failure. */ -fr_event_fd_t *fr_event_fd_insert(fr_event_list_t *el, int fd, - fr_event_fd_handler_t read, - fr_event_fd_handler_t write, - fr_event_fd_handler_t error, - void *ctx) +int fr_event_fd_insert(fr_event_list_t *el, int fd, + fr_event_fd_handler_t read, + fr_event_fd_handler_t write, + fr_event_fd_handler_t error, + void *ctx) { - int filter = 0; - struct kevent evset[2]; - struct kevent *ev_p = evset; - fr_event_fd_t *ef, find; + int filter = 0; + struct kevent evset[2]; + struct kevent *ev_p = evset; + fr_event_fd_t *ef, find; if (!el) { fr_strerror_printf("Invalid argument: NULL event list"); - return NULL; + return -1; } if (!read && !write) { fr_strerror_printf("Invalid arguments: NULL read and write callbacks"); - return NULL; + return -1; } if (fd < 0) { fr_strerror_printf("Invalid arguments: Bad FD %i", fd); - return NULL; + return -1; } if (el->exit) { fr_strerror_printf("Event loop exiting"); - return NULL; + return -1; } memset(&find, 0, sizeof(find)); @@ -326,8 +328,8 @@ fr_event_fd_t *fr_event_fd_insert(fr_event_list_t *el, int fd, if (!ef) { ef = talloc_zero(el, fr_event_fd_t); if (!ef) { - fr_strerror_printf("Failed allocating memory for FD"); - return NULL; + fr_strerror_printf("Out of memory"); + return -1; } talloc_set_destructor(ef, _fr_event_fd_free); el->num_fds++; @@ -373,11 +375,11 @@ fr_event_fd_t *fr_event_fd_insert(fr_event_list_t *el, int fd, if (kevent(el->kq, evset, ev_p - evset, NULL, 0, NULL) < 0) { fr_strerror_printf("Failed inserting event for FD %i: %s", fd, fr_syserror(errno)); talloc_free(ef); - return NULL; + return -1; } ef->is_registered = true; - return ef; + return 0; } diff --git a/src/main/process.c b/src/main/process.c index 583d8f36cbb..801b747e1ed 100644 --- a/src/main/process.c +++ b/src/main/process.c @@ -4888,7 +4888,7 @@ static int event_new_fd(rad_listen_t *this) /* * All sockets: add the FD to the event handler. */ - if (!fr_event_fd_insert(el, this->fd, event_socket_handler, NULL, NULL, this)) { + if (fr_event_fd_insert(el, this->fd, event_socket_handler, NULL, NULL, this) < 0) { ERROR("Failed adding event handler for socket: %s", fr_strerror()); fr_exit(1); } @@ -5393,7 +5393,7 @@ int radius_event_start(bool have_children) } DEBUG4("Created signal pipe. Read end FD %i, write end FD %i", self_pipe[0], self_pipe[1]); - if (!fr_event_fd_insert(el, self_pipe[0], event_signal_handler, NULL, NULL, el)) { + if (fr_event_fd_insert(el, self_pipe[0], event_signal_handler, NULL, NULL, el) < 0) { ERROR("Failed creating signal pipe handler: %s", fr_strerror()); return -1; } diff --git a/src/main/radsniff.c b/src/main/radsniff.c index e0516c626bc..ae11f766990 100644 --- a/src/main/radsniff.c +++ b/src/main/radsniff.c @@ -2802,7 +2802,7 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } - if (!fr_event_fd_insert(events, self_pipe[0], rs_signal_action, NULL, NULL, events)) { + if (fr_event_fd_insert(events, self_pipe[0], rs_signal_action, NULL, NULL, events) < 0) { ERROR("Failed inserting signal pipe descriptor: %s", fr_strerror()); goto finish; } @@ -2821,7 +2821,7 @@ int main(int argc, char *argv[]) event->out = out; event->stats = stats; - if (!fr_event_fd_insert(events, in_p->fd, rs_got_packet, NULL, NULL, event)) { + if (fr_event_fd_insert(events, in_p->fd, rs_got_packet, NULL, NULL, event) < 0) { ERROR("Failed inserting file descriptor"); goto finish; } diff --git a/src/main/threads.c b/src/main/threads.c index 1a8601cd31b..0f5cd641d20 100644 --- a/src/main/threads.c +++ b/src/main/threads.c @@ -461,7 +461,7 @@ static void *thread_handler(void *arg) local_backlog = fr_heap_create(timestamp_cmp, offsetof(REQUEST, heap_id)); rad_assert(local_backlog != NULL); - if (!fr_event_fd_insert(el, thread->pipe_fd[0], thread_fd_handler, NULL, NULL, thread)) { + if (fr_event_fd_insert(el, thread->pipe_fd[0], thread_fd_handler, NULL, NULL, thread) < 0) { ERROR("Failed inserting event for self"); goto done; } diff --git a/src/main/unlang.c b/src/main/unlang.c index 19413845c6a..952e20ff3db 100644 --- a/src/main/unlang.c +++ b/src/main/unlang.c @@ -1435,7 +1435,7 @@ int unlang_event_fd_readable_add(REQUEST *request, fr_unlang_fd_callback_t callb ev->thread = frame->modcall.thread; ev->ctx = ctx; - if (!fr_event_fd_insert(request->el, fd, unlang_event_fd_handler, NULL, NULL, ev)) { + if (fr_event_fd_insert(request->el, fd, unlang_event_fd_handler, NULL, NULL, ev) < 0) { talloc_free(ev); return -1; } diff --git a/src/modules/proto_bfd/proto_bfd.c b/src/modules/proto_bfd/proto_bfd.c index 34de93c28a3..4c296d449dc 100644 --- a/src/modules/proto_bfd/proto_bfd.c +++ b/src/modules/proto_bfd/proto_bfd.c @@ -332,7 +332,7 @@ static int bfd_pthread_create(bfd_state_t *session) fcntl(session->pipefd[1], F_SETFL, O_NONBLOCK | FD_CLOEXEC); #endif - if (!fr_event_fd_insert(session->el, session->pipefd[0], bfd_pipe_recv, NULL, NULL, session)) { + if (fr_event_fd_insert(session->el, session->pipefd[0], bfd_pipe_recv, NULL, NULL, session) < 0) { ERROR("Failed inserting file descriptor into event list: %s", fr_strerror()); goto close_pipes; } diff --git a/src/modules/rlm_radius_client/rlm_radius_client.c b/src/modules/rlm_radius_client/rlm_radius_client.c index 99c07c639b8..129d11c8874 100644 --- a/src/modules/rlm_radius_client/rlm_radius_client.c +++ b/src/modules/rlm_radius_client/rlm_radius_client.c @@ -368,7 +368,7 @@ static int mod_fd_add(fr_event_list_t *el, rlm_radius_client_conn_t *conn, rlm_r return -1; } - if (!fr_event_fd_insert(el, sockfd, mod_event_fd, NULL, NULL, conn)) { + if (fr_event_fd_insert(el, sockfd, mod_event_fd, NULL, NULL, conn) < 0) { DEBUG("Failed adding event for socket: %s", fr_strerror()); close(sockfd); return -1; diff --git a/src/modules/rlm_unbound/rlm_unbound.c b/src/modules/rlm_unbound/rlm_unbound.c index 92d41800aa5..c121593fad2 100644 --- a/src/modules/rlm_unbound/rlm_unbound.c +++ b/src/modules/rlm_unbound/rlm_unbound.c @@ -625,7 +625,7 @@ static int mod_instantiate(CONF_SECTION *conf, void *instance) inst->log_fd = ub_fd(inst->ub); if (inst->log_fd >= 0) { - if (!fr_event_fd_insert(inst->el, inst->log_fd, ub_fd_handler, NULL, NULL, inst)) { + if (fr_event_fd_insert(inst->el, inst->log_fd, ub_fd_handler, NULL, NULL, inst) < 0) { cf_log_err_cs(conf, "could not insert async fd"); inst->log_fd = -1; goto error_nores;