From 4ceadc74f0086168fbc576032ba3e6f23af16e39 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 13 Apr 2026 17:36:54 -0400 Subject: Changes that went uncommitted for too long Signed-off-by: Andrew Opalach --- src/liana/server.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'src/liana/server.c') diff --git a/src/liana/server.c b/src/liana/server.c index 04ef54b..5065425 100644 --- a/src/liana/server.c +++ b/src/liana/server.c @@ -1,3 +1,6 @@ +#define AL_LOG_SECTION "liana" +#include + #include "server.h" #include "handlers.h" #include "list.h" @@ -166,7 +169,7 @@ static void data_connection_closed_callback(void *userdata, struct nn_packet_str } } -static void start_connection_handler(struct lia_node_connection *conn, u32 mask) +static void start_connection_handler(struct lia_node_connection *conn, u64 mask) { struct nn_packet_stream *stream = conn->stream; conn->handler->subscribe(conn->handler, mask); @@ -180,7 +183,7 @@ static void start_connection_handler(struct lia_node_connection *conn, u32 mask) static void subscribe_packet_callback(void *userdata, struct nn_packet_stream *stream, struct nn_packet *packet) { struct lia_node_connection *conn = (struct lia_node_connection *)userdata; - u32 mask = nn_packet_read_u32(packet); + u64 mask = nn_packet_read_u64(packet); nn_packet_stream_return_packet(stream, packet); start_connection_handler(conn, mask); } @@ -203,7 +206,7 @@ static void handle_connection(struct lia_node_connection *conn, struct nn_packet { struct nn_packet_stream *stream = conn->stream; - u32 mask = nn_packet_read_u32(packet); + u64 mask = nn_packet_read_u64(packet); u64 seek_pos = nn_packet_read_u64(packet); al_assert(!conn->ref); @@ -487,7 +490,7 @@ void lia_node_close(struct lia_node *node) al_array_foreach_rev(node->connections, i, conn) { if (conn->stream) { conn->disconnected = true; - nn_packet_stream_disconnect(conn->stream); + //nn_packet_stream_disconnect(conn->stream); } else { free_connection(conn); } @@ -503,6 +506,19 @@ void lia_server_close(struct lia_server *server) } } +void lia_server_force_disconnect_nodes(struct lia_server *server) +{ + struct lia_node *node; + al_array_foreach(server->nodes, i, node) { + struct lia_node_connection *conn; + al_array_foreach_rev(node->connections, j, conn) { + if (conn->stream) { + nn_packet_stream_disconnect(conn->stream); + } + } + } +} + void lia_server_free(struct lia_server *server) { // Assuming we joined on the event loop, server->nodes should be empty. -- cgit v1.2.3-101-g0448