*/
static void _cluster_node_conf_apply(fr_pool_t *pool, void *opaque)
{
- fr_pair_list_t *args = NULL;
+ fr_pair_list_t args;
fr_redis_cluster_node_t *node = opaque;
+ fr_pair_list_init(&args);
node->addr = node->pending_addr;
if (node->cluster->triggers_enabled) {
- args = trigger_args_afrom_server(pool, node->name, node->addr.inet.dst_port);
- if (fr_pair_list_empty(args)) return;
+ trigger_args_afrom_server(pool, &args, node->name, node->addr.inet.dst_port);
+ if (fr_pair_list_empty(&args)) return;
- if (!fr_pair_list_empty(&node->cluster->trigger_args)) MEM(fr_pair_list_copy(node->cluster, args,
+ if (!fr_pair_list_empty(&node->cluster->trigger_args)) MEM(fr_pair_list_copy(node->cluster, &args,
&node->cluster->trigger_args) >= 0);
- fr_pool_enable_triggers(pool, node->cluster->trigger_prefix, args);
+ fr_pool_enable_triggers(pool, node->cluster->trigger_prefix, &args);
- fr_pair_list_free(args);
+ fr_pair_list_free(&args);
}
}
*/
if (!node->pool) {
char buffer[256];
- fr_pair_list_t *args = NULL;
+ fr_pair_list_t args;
CONF_SECTION *pool;
+ fr_pair_list_init(&args);
snprintf(buffer, sizeof(buffer), "%s [%i]", cluster->log_prefix, node->id);
pool = cf_section_find(cluster->module, "pool", NULL);
fr_pool_reconnect_func(node->pool, _cluster_node_conf_apply);
if (trigger_enabled() && cluster->triggers_enabled) {
- args = trigger_args_afrom_server(node->pool, node->name, node->addr.inet.dst_port);
- if (fr_pair_list_empty(args)) goto error;
+ trigger_args_afrom_server(node->pool, &args, node->name, node->addr.inet.dst_port);
+ if (fr_pair_list_empty(&args)) goto error;
- if (!fr_pair_list_empty(&cluster->trigger_args)) MEM(fr_pair_list_copy(cluster, args, &cluster->trigger_args) >= 0);
+ if (!fr_pair_list_empty(&cluster->trigger_args)) MEM(fr_pair_list_copy(cluster, &args, &cluster->trigger_args) >= 0);
- fr_pool_enable_triggers(node->pool, node->cluster->trigger_prefix, args);
+ fr_pool_enable_triggers(node->pool, node->cluster->trigger_prefix, &args);
- fr_pair_list_free(args);
+ fr_pair_list_free(&args);
}
if (fr_pool_start(node->pool) < 0) goto error;
* else it will return NULL.
*
* @param[in] ctx to allocate fr_pair_t s in.
+ * @param[out] list to append Pool-Server and Pool-Port pairs to
* @param[in] server we're connecting to.
* @param[in] port on that server.
- * @return
- * - NULL on failure, or if triggers are not enabled.
- * - list containing Pool-Server and Pool-Port
*/
-fr_pair_list_t *trigger_args_afrom_server(TALLOC_CTX *ctx, char const *server, uint16_t port)
+void trigger_args_afrom_server(TALLOC_CTX *ctx, fr_pair_list_t *list, char const *server, uint16_t port)
{
fr_dict_attr_t const *server_da;
fr_dict_attr_t const *port_da;
- fr_pair_list_t *out;
fr_pair_t *vp;
- out = fr_pair_list_alloc(ctx);
- fr_pair_list_init(out);
server_da = fr_dict_attr_child_by_num(fr_dict_root(fr_dict_internal()), FR_CONNECTION_POOL_SERVER);
if (!server_da) {
ERROR("Incomplete dictionary: Missing definition for \"Connection-Pool-Server\"");
- return NULL;
+ return;
}
port_da = fr_dict_attr_child_by_num(fr_dict_root(fr_dict_internal()), FR_CONNECTION_POOL_PORT);
if (!port_da) {
ERROR("Incomplete dictionary: Missing definition for \"Connection-Pool-Port\"");
- return NULL;
+ return;
}
MEM(vp = fr_pair_afrom_da(ctx, server_da));
fr_pair_value_strdup(vp, server);
- fr_pair_add(out, vp);
+ fr_pair_add(list, vp);
MEM(vp = fr_pair_afrom_da(ctx, port_da));
vp->vp_uint16 = port;
- fr_pair_add(out, vp);
-
- return out;
+ fr_pair_add(list, vp);
}