static rlm_rcode_t CC_HINT(nonnull) mod_authorize(module_ctx_t const *mctx, REQUEST *request)
{
- rlm_sigtran_t const *inst = talloc_get_type_abort_const(mctx->instance, rlm_sigtran_t);
+ rlm_sigtran_t const *inst = talloc_get_type_abort_const(mctx->instance, rlm_sigtran_t);
+ rlm_sigtran_thread_t const *t = talloc_get_type_abort_const(mctx->thread, rlm_sigtran_thread_t);
- return sigtran_client_map_send_auth_info(inst, request, inst->conn, *(int *)thread);
+ return sigtran_client_map_send_auth_info(inst, request, inst->conn, t->fd);
}
/** Convert our sccp address config structure into sockaddr_sccp
return 0;
}
-static int mod_thread_instantiate(UNUSED CONF_SECTION const *cs, UNUSED void *instance,
+static int mod_thread_instantiate(UNUSED CONF_SECTION const *cs, void *instance,
fr_event_list_t *el, void *thread)
{
- rlm_sigtran_t *inst = instance;
- int fd;
+ rlm_sigtran_t *inst = instance;
+ rlm_sigtran_thread_t *t = thread;
+ int fd;
+
+ t->inst = instance;
fd = sigtran_client_thread_register(el);
if (fd < 0) {
return -1;
}
- *((int *)thread) = fd;
+ t->fd = fd;
return 0;
}
-static int mod_thread_detach(fr_event_list_t *el, UNUSED void *thread)
+static int mod_thread_detach(fr_event_list_t *el, void *thread)
{
- sigtran_client_thread_unregister(el, *(int *)thread); /* Also closes our side */
+ rlm_sigtran_thread_t *t = thread;
+
+ sigtran_client_thread_unregister(el, t->fd); /* Also closes our side */
return 0;
}
.name = "sigtran",
.type = RLM_TYPE_THREAD_SAFE | RLM_TYPE_RESUMABLE,
.inst_size = sizeof(rlm_sigtran_t),
- .thread_inst_size = sizeof(int),
+ .thread_inst_size = sizeof(rlm_sigtran_thread_t),
.config = module_config,
.instantiate = mod_instantiate,
.detach = mod_detach,