summaryrefslogtreecommitdiff
path: root/src/liana
diff options
context:
space:
mode:
Diffstat (limited to 'src/liana')
-rw-r--r--src/liana/client.c4
-rw-r--r--src/liana/list.c2
-rw-r--r--src/liana/server.c5
-rw-r--r--src/liana/vcr.c6
4 files changed, 8 insertions, 9 deletions
diff --git a/src/liana/client.c b/src/liana/client.c
index f1d2a61..daf32b0 100644
--- a/src/liana/client.c
+++ b/src/liana/client.c
@@ -158,6 +158,7 @@ static bool connection_callback(void *userdata, struct nn_packet_stream *stream)
};
client->callback(client->userdata, LIANA_CLIENT_RESUME_AT, NULL, &time);
if (client->mask == 0) {
+ al_assert(client->connection_id == 0);
al_log_warn("liana", "Handling reconnect on unconfigured client.");
} else {
client->callback(client->userdata, LIANA_CLIENT_RECONNECTED, NULL, NULL);
@@ -167,7 +168,8 @@ static bool connection_callback(void *userdata, struct nn_packet_stream *stream)
stream->packet_sent_callback = packet_sent_callback;
struct nn_packet *packet = nn_packet_create();
nn_packet_write_u32(packet, client->id);
- nn_packet_write_u32(packet, client->connection_id);
+ //nn_packet_write_u32(packet, client->connection_id);
+ nn_packet_write_u32(packet, 0);
nn_packet_write_s32(packet, client->mask);
nn_packet_write_u64(packet, client->pos);
if (client->mask == 0) {
diff --git a/src/liana/list.c b/src/liana/list.c
index 218c51e..3c8a9c0 100644
--- a/src/liana/list.c
+++ b/src/liana/list.c
@@ -633,7 +633,7 @@ static void handle_clear(struct lia_list *list)
static void run_queue(struct lia_list *list)
{
if (!list->cmd) {
- if (list->queue.size == 0) return;
+ if (al_array_is_empty(list->queue)) return;
al_array_pop_at(list->queue, 0, list->cmd);
}
struct lia_list_cmd *cmd = list->cmd;
diff --git a/src/liana/server.c b/src/liana/server.c
index 3b7bc2d..87bcf57 100644
--- a/src/liana/server.c
+++ b/src/liana/server.c
@@ -4,7 +4,6 @@
#include "handler.h"
#include "handlers.h"
#include "list.h"
-#include "vcr.h"
static inline u32 get_incremental_id(struct lia_server *server)
{
@@ -167,9 +166,7 @@ static void handle_connection(struct lia_node_connection *conn, struct nn_packet
stream->packet_sent_callback = data_packet_sent_callback;
stream->packets_sent_callback = data_packets_sent_callback;
stream->connection_closed_callback = data_connection_closed_callback;
-#ifndef VCR_BUFFER_WHOLE_FILE
nn_thread_create(&conn->thread, handler_thread, conn);
-#endif
}
}
@@ -202,7 +199,7 @@ static void signal_callback(void *userdata)
struct nn_packet_stream *stream = conn->stream;
if (!conn->errored) {
conn->id = get_incremental_id(server);
- nn_packet_pool_init(&conn->pool, 512, server->loop, packet_pool_callback, conn);
+ nn_packet_pool_init(&conn->pool, 1024, server->loop, packet_pool_callback, conn);
al_array_push(node->connections, conn);
handle_connection(conn, packet);
} else {
diff --git a/src/liana/vcr.c b/src/liana/vcr.c
index c12c422..06f0fe4 100644
--- a/src/liana/vcr.c
+++ b/src/liana/vcr.c
@@ -103,6 +103,8 @@ static nn_thread_result NNWT_THREADCALL vcr_track_thread(void *userdata)
bool success = track->client->handle_packet(track->client, packet);
if (!success) {
al_log_error("liana", "Error handling packet, exiting track thread.");
+ return_entire_cache(track);
+ track->cache.disabled = true;
nn_packet_cache_unlock(&track->cache);
nn_mutex_unlock(&track->mutex);
return 0;
@@ -186,7 +188,7 @@ void lia_vcr_add_track(struct lia_vcr *vcr, struct lia_vcr_track *track)
bool lia_vcr_is_empty(struct lia_vcr *vcr)
{
- return vcr->tracks.size == 0;
+ return al_array_is_empty(vcr->tracks);
}
static struct lia_vcr_track *get_track_from_index(struct lia_vcr *vcr, s32 index)
@@ -347,9 +349,7 @@ void lia_vcr_flush(struct lia_vcr *vcr)
al_array_foreach(vcr->tracks, i, track) {
if (VCR_TRACK_THREADED(track)) {
vcr_track_close_internal(track);
-#ifndef VCR_BUFFER_WHOLE_FILE
return_entire_cache(track);
-#endif
al_atomic_store(u8)(&track->buffered, 0, AL_ATOMIC_RELAXED);
track->client->flush(track->client);
nn_packet_cache_enable(&track->cache);