summaryrefslogtreecommitdiff
path: root/src/liana/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/liana/server.c')
-rw-r--r--src/liana/server.c24
1 files changed, 20 insertions, 4 deletions
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 <al/log.h>
+
#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.