]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
return fr_network_t when adding a socket to a scheduler
authorAlan T. DeKok <aland@freeradius.org>
Wed, 7 Jun 2017 12:34:18 +0000 (08:34 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 7 Jun 2017 12:34:18 +0000 (08:34 -0400)
so that the caller can push other things for that socket
to the network thread.

src/lib/io/schedule.c
src/lib/io/schedule.h
src/modules/proto_radius/proto_radius.c

index 76fafdaa4cd075e3180ac554de7c88aad81c1aae..6ba5a763169f07a26cf2769a6961db228fe210e2 100644 (file)
@@ -29,8 +29,6 @@ RCSID("$Id$")
 #include <freeradius-devel/io/schedule.h>
 #include <freeradius-devel/rbtree.h>
 
-#include <freeradius-devel/io/network.h>
-
 #ifdef HAVE_PTHREAD_H
 #include <pthread.h>
 #define PTHREAD_MUTEX_LOCK   pthread_mutex_lock
@@ -634,10 +632,17 @@ int fr_schedule_destroy(fr_schedule_t *sc)
  * @param fd the file descriptor for the socket
  * @param ctx the context for the transport
  * @param transport the transport
+ * @return
+ *     - NULL on error
+ *     - the fr_network_t that the socket was added to.
  */
-int fr_schedule_socket_add(fr_schedule_t *sc, int fd, void *ctx, fr_io_op_t *transport)
+fr_network_t *fr_schedule_socket_add(fr_schedule_t *sc, int fd, void *ctx, fr_io_op_t *transport)
 {
-       return fr_network_socket_add(sc->sn->rc, fd, ctx, transport);
+       if (fr_network_socket_add(sc->sn->rc, fd, ctx, transport) < 0) {
+               return NULL;
+       }
+
+       return sc->sn->rc;
 }
 
 
index d33fe9091eed09d7c684196c5d515f41b3da5dd9..ace2d1dd46aa023d0d87f5f92fb7045f7d5400f0 100644 (file)
@@ -26,6 +26,7 @@
 RCSIDH(schedule_h, "$Id$")
 
 #include <freeradius-devel/io/worker.h>
+#include <freeradius-devel/io/network.h>
 #include <freeradius-devel/fr_log.h>
 
 #ifdef __cplusplus
@@ -42,7 +43,7 @@ fr_schedule_t *fr_schedule_create(TALLOC_CTX *ctx, fr_log_t *log, int max_inputs
 int fr_schedule_destroy(fr_schedule_t *sc);
 int fr_schedule_get_worker_kq(fr_schedule_t *sc);
 
-int fr_schedule_socket_add(fr_schedule_t *sc, int fd, void *ctx, fr_io_op_t *transport) CC_HINT(nonnull);
+fr_network_t *fr_schedule_socket_add(fr_schedule_t *sc, int fd, void *ctx, fr_io_op_t *transport) CC_HINT(nonnull);
 
 #ifdef __cplusplus
 }
index cb6895eee4104f7ce6940e54bb0cf07052d84b9c..ad4663c02263b0ecc8ec04c7dcbb3c434cd61024 100644 (file)
@@ -251,7 +251,7 @@ static int open_transport(proto_radius_ctx_t *ctx, UNUSED fr_schedule_t *handle,
         *
         *      @todo - more cleanup on error.
         */
-       if (fr_schedule_socket_add(handle, ctx->sockfd, ctx, &ctx->transport) < 0) {
+       if (!fr_schedule_socket_add(handle, ctx->sockfd, ctx, &ctx->transport)) {
                talloc_free(ctx);
                return -1;
        }