diff --git a/src/switch_jitterbuffer.c b/src/switch_jitterbuffer.c index 7ba582028d..f27b5ee8e1 100644 --- a/src/switch_jitterbuffer.c +++ b/src/switch_jitterbuffer.c @@ -1256,11 +1256,14 @@ SWITCH_DECLARE(switch_status_t) switch_jb_put_packet(switch_jb_t *jb, switch_rtp add_node(jb, packet, len); - if (switch_test_flag(jb, SJB_QUEUE_ONLY) && jb->max_packet_len - && jb->allocated_nodes > jb->max_frame_len * 2 - 1) { + 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) { while ((jb->max_frame_len * 2 - jb->visible_nodes) < jb->max_packet_len) { 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);