#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
* @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;
}
RCSIDH(schedule_h, "$Id$")
#include <freeradius-devel/io/worker.h>
+#include <freeradius-devel/io/network.h>
#include <freeradius-devel/fr_log.h>
#ifdef __cplusplus
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
}
*
* @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;
}