*
*/
if (!inst->pending_clients) {
- MEM(inst->pending_clients = fr_heap_create(client, pending_client_cmp,
+ MEM(inst->pending_clients = fr_heap_create(inst->ctx, pending_client_cmp,
fr_io_client_t, heap_id));
}
if (inst->app_io->bootstrap && (inst->app_io->bootstrap(inst->app_io_instance,
inst->app_io_conf) < 0)) {
- cf_log_err(inst->app_io_conf, "Bootstrap failed for \"%s\"", inst->app_io->name);
+ cf_log_err(inst->app_io_conf, "Bootstrap failed for \"proto_%s\"", inst->app_io->name);
return -1;
}
rad_assert(inst->app_io != NULL);
+ /*
+ * Create the trie of clients for this socket.
+ */
+ inst->trie = fr_trie_alloc(inst->ctx);
+ if (!inst->trie) {
+ cf_log_err(conf, "Instantiation failed for \"proto_%s\"", inst->app_io->name);
+ return -1;
+ }
+
if (inst->app_io->instantiate &&
(inst->app_io->instantiate(inst->app_io_instance,
inst->app_io_conf) < 0)) {
- cf_log_err(conf, "Instantiation failed for \"%s\"", inst->app_io->name);
+ cf_log_err(conf, "Instantiation failed for \"proto_%s\"", inst->app_io->name);
return -1;
}
typedef struct fr_io_instance_t {
int magic; //!< sparkles and unicorns
- dl_instance_t const *dl_inst; //!< our parent dl_inst
+ TALLOC_CTX *ctx; //!< this struct might not be talloc'd
+ dl_instance_t const *dl_inst; //!< our parent dl_inst
uint32_t max_connections; //!< maximum number of connections to allow
uint32_t max_clients; //!< maximum number of dynamic clients to allow
FR_INTEGER_BOUND_CHECK("max_packet_size", inst->max_packet_size, <=, 65535);
/*
- * Create the trie of clients for this socket.
+ * Set talloc ctx for master IO.
*/
- inst->io.trie = fr_trie_alloc(inst);
- if (!inst->io.trie) {
- cf_log_err(conf, "Instantiation failed for \"%s\"", inst->io.app_io->name);
- return -1;
- }
+ inst->io.ctx = inst;
/*
* Instantiate the master io submodule