diff options
| author | 2025-04-30 17:42:08 -0400 | |
|---|---|---|
| committer | 2025-04-30 17:42:08 -0400 | |
| commit | 2ce402fa41508d45e2d30b56502c00ef92efff7b (patch) | |
| tree | 63f4701b292dfcbe08af1aeb3a5942c1973c45ba /src/liana | |
| parent | af54e6510f2f701db3b3a533514076c04cea4c66 (diff) | |
| download | camu-2ce402fa41508d45e2d30b56502c00ef92efff7b.tar.gz camu-2ce402fa41508d45e2d30b56502c00ef92efff7b.tar.bz2 camu-2ce402fa41508d45e2d30b56502c00ef92efff7b.zip | |
Refactor the way cache backing sizes are tracked
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/liana')
| -rw-r--r-- | src/liana/handlers/codec_client.c | 2 | ||||
| -rw-r--r-- | src/liana/server.c | 11 | ||||
| -rw-r--r-- | src/liana/vcr.c | 11 |
3 files changed, 13 insertions, 11 deletions
diff --git a/src/liana/handlers/codec_client.c b/src/liana/handlers/codec_client.c index 39bb2d1..fd2569b 100644 --- a/src/liana/handlers/codec_client.c +++ b/src/liana/handlers/codec_client.c @@ -141,7 +141,7 @@ static bool codec_client_handle_packet(struct lia_client_handler *handler, struc packet->rindex = rindex; if (!success) { - // Forcing in EOF on an error is not necessary but should exhibit less erratic behavior sink-side. + // Forcing in an EOF on an error is not necessary but behaves better in the sink. codec->handler.callback(codec->handler.userdata, LIANA_CLIENT_EOF, codec->handler.stream, NULL); return false; } diff --git a/src/liana/server.c b/src/liana/server.c index 3670607..acb5f31 100644 --- a/src/liana/server.c +++ b/src/liana/server.c @@ -152,12 +152,9 @@ static void data_connection_closed_callback(void *userdata, struct nn_packet_str { struct lia_node_connection *conn = (struct lia_node_connection *)userdata; (void)stream; - // We will never be here if init_thread() blocks or fails. disable_connection_and_wait(conn); - free_connection_stream(conn); - if (conn->disconnected) { free_connection(conn); } else { @@ -448,8 +445,11 @@ static void duration_signal_callback(void *userdata) node->handler->free(&node->handler); bool got_visual_data = false; struct lia_visual_data visual_data; - //cch_handle_seek(&node->handle, 0, SEEK_SET); - //got_visual_data = lia_prepare_visual_data(&node->handle, &visual_data); +#if 0 // @TODO: This is obviously bad because it blocks the event loop. + // Evaluate this when getting around to http/hls stream fixes. + cch_handle_seek(&node->handle, 0, SEEK_SET); + got_visual_data = lia_prepare_visual_data(&node->handle, &visual_data); +#endif cch_entry_return_handle(node->entry, &node->handle); if (should_free_node(node)) { free_node(node); @@ -516,7 +516,6 @@ void lia_server_free(struct lia_server *server) al_free(node); } al_array_free(server->nodes); - al_assert(!server->dormant_connections.count); al_array_free(server->dormant_connections); } diff --git a/src/liana/vcr.c b/src/liana/vcr.c index 4e176e7..4500681 100644 --- a/src/liana/vcr.c +++ b/src/liana/vcr.c @@ -104,6 +104,7 @@ static nn_thread_result NNWT_THREADCALL vcr_track_thread(void *userdata) // NULL packet means flush. bool success = track->client->handle_packet(track->client, packet); if (!success) { + // In the case of codec_client, an EOF will be sent on an error. log_error("Error handling packet, exiting track thread."); return_entire_cache(track); track->cache.disabled = true; @@ -290,16 +291,18 @@ void lia_vcr_push_packet(struct lia_vcr *vcr, struct nn_packet *packet) break; } case LIANA_PACKET_EOF: + case LIANA_PACKET_ERROR: al_array_foreach(vcr->tracks, i, track) { nn_packet_cache_send_packet(&track->cache, NULL); } #ifndef CAMU_DIRECT_MODE nn_signal_stop(&vcr->signal); #endif - log_debug("Received EOF."); - break; - case LIANA_PACKET_ERROR: - log_warn("Unhandled error packet."); + if (op == LIANA_PACKET_EOF) { + log_debug("Received EOF."); + } else if (op == LIANA_PACKET_ERROR) { + log_warn("Forcing EOF because we got an error packet."); + } break; default: log_warn("Erroneous packet."); |