From b73a7c872b55d0b78e4aa5a08fef843a7d1e503f Mon Sep 17 00:00:00 2001 From: kodokaii Date: Thu, 3 Jul 2025 19:40:10 +0200 Subject: [PATCH] chan_websocket: Reset frame_queue_length to 0 after FLUSH_MEDIA In the WebSocket channel driver, the FLUSH_MEDIA command clears all frames from the queue but does not reset the frame_queue_length counter. As a result, the driver incorrectly thinks the queue is full after flushing, which prevents new multimedia frames from being sent, especially after multiple flush commands. This fix sets frame_queue_length to 0 after flushing, ensuring the queue state is consistent with its actual content. Fixes: #1304 --- channels/chan_websocket.c | 1 + 1 file changed, 1 insertion(+) diff --git a/channels/chan_websocket.c b/channels/chan_websocket.c index 58728af32a..1600871842 100644 --- a/channels/chan_websocket.c +++ b/channels/chan_websocket.c @@ -476,6 +476,7 @@ static int process_text_message(struct websocket_pvt *instance, while ((frame = AST_LIST_REMOVE_HEAD(&instance->frame_queue, frame_list))) { ast_frfree(frame); } + instance->frame_queue_length = 0; instance->bulk_media_in_progress = 0; instance->leftover_len = 0; AST_LIST_UNLOCK(&instance->frame_queue);