{
fr_network_t *nr;
+#ifndef NDEBUG
+ int rbflags = RBTREE_FLAG_LOCK; /* Produces deadlocks when iterators conflict with other operations */
+#else
+ int rbflags = RBTREE_FLAG_NONE;
+#endif
+
nr = talloc_zero(ctx, fr_network_t);
if (!nr) {
fr_strerror_const("Failed allocating memory");
/*
* Create the various heaps.
*/
- nr->sockets = rbtree_talloc_alloc(nr, fr_network_socket_t, listen_node, socket_listen_cmp, NULL, RBTREE_FLAG_NONE);
+ nr->sockets = rbtree_talloc_alloc(nr, fr_network_socket_t, listen_node, socket_listen_cmp, NULL, rbflags);
if (!nr->sockets) {
fr_strerror_const_push("Failed creating listen tree for sockets");
goto fail2;
}
- nr->sockets_by_num = rbtree_talloc_alloc(nr, fr_network_socket_t, num_node, socket_num_cmp, NULL, RBTREE_FLAG_NONE);
+ nr->sockets_by_num = rbtree_talloc_alloc(nr, fr_network_socket_t, num_node, socket_num_cmp, NULL, rbflags);
if (!nr->sockets_by_num) {
fr_strerror_const_push("Failed creating number tree for sockets");
goto fail2;
{
fr_worker_t *worker;
+#ifndef NDEBUG
+ int rbflags = RBTREE_FLAG_LOCK; /* Produces deadlocks when iterators conflict with other operations */
+#else
+ int rbflags = RBTREE_FLAG_NONE;
+#endif
+
worker = talloc_zero(ctx, fr_worker_t);
if (!worker) {
nomem:
goto fail;
}
- worker->dedup = rbtree_talloc_alloc(worker, request_t, dedup_node, worker_dedup_cmp, NULL, RBTREE_FLAG_NONE);
+ worker->dedup = rbtree_talloc_alloc(worker, request_t, dedup_node, worker_dedup_cmp, NULL, rbflags);
if (!worker->dedup) {
fr_strerror_const("Failed creating de_dup tree");
goto fail;
int virtual_servers_init(CONF_SECTION *config)
{
+#ifndef NDEBUG
+ int rbflags = RBTREE_FLAG_LOCK; /* Produces deadlocks when iterators conflict with other operations */
+#else
+ int rbflags = RBTREE_FLAG_NONE;
+#endif
+
virtual_server_root = config;
if (fr_dict_autoload(virtual_server_dict) < 0) {
}
MEM(listen_addr_root = rbtree_alloc(NULL, fr_listen_t, virtual_server_node,
- listen_addr_cmp, NULL, RBTREE_FLAG_NONE));
+ listen_addr_cmp, NULL, rbflags));
MEM(server_section_name_tree = rbtree_alloc(NULL, virtual_server_compile_t, node,
- server_section_name_cmp, NULL, RBTREE_FLAG_NONE));
+ server_section_name_cmp, NULL, rbflags));
return 0;
}