提交 f2e7e69b authored 作者: Dragos Oancea's avatar Dragos Oancea 提交者: Andrey Volk

FS-11750: JB fix: avoid infinite loop when chan var rtp_nack_buffer_size is…

FS-11750: JB fix: avoid infinite loop when chan var rtp_nack_buffer_size is small (initial max_packet_len)
上级 38576934
...@@ -1256,11 +1256,14 @@ SWITCH_DECLARE(switch_status_t) switch_jb_put_packet(switch_jb_t *jb, switch_rtp ...@@ -1256,11 +1256,14 @@ SWITCH_DECLARE(switch_status_t) switch_jb_put_packet(switch_jb_t *jb, switch_rtp
add_node(jb, packet, len); add_node(jb, packet, len);
if (switch_test_flag(jb, SJB_QUEUE_ONLY) && jb->max_packet_len if (switch_test_flag(jb, SJB_QUEUE_ONLY) && jb->max_packet_len && jb->max_frame_len * 2 > jb->max_packet_len &&
&& jb->allocated_nodes > jb->max_frame_len * 2 - 1) { jb->allocated_nodes > jb->max_frame_len * 2 - 1) {
while ((jb->max_frame_len * 2 - jb->visible_nodes) < jb->max_packet_len) { while ((jb->max_frame_len * 2 - jb->visible_nodes) < jb->max_packet_len) {
drop_oldest_frame(jb); drop_oldest_frame(jb);
} }
} else if (switch_test_flag(jb, SJB_QUEUE_ONLY) && jb->max_packet_len && jb->max_frame_len * 2 < jb->max_packet_len) {
/* rtp_nack_buffer_size less than initial max_packet_len */
drop_oldest_frame(jb);
} }
switch_mutex_unlock(jb->mutex); switch_mutex_unlock(jb->mutex);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论