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);