Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/include/private/switch_core_pvt.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ struct switch_core_session {

switch_media_handle_t *media_handle;
uint32_t decoder_errors;
uint32_t write_decoder_errors;
switch_core_video_thread_callback_func_t video_read_callback;
void *video_read_user_data;
switch_core_video_thread_callback_func_t text_read_callback;
Expand Down
9 changes: 9 additions & 0 deletions src/switch_core_media.c
Original file line number Diff line number Diff line change
Expand Up @@ -16060,8 +16060,17 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess

switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Codec %s decoder error!\n",
frame->codec->codec_interface->interface_name);

/* Drop the frame rather than tear the call down: any non-success status here makes
switch_ivr_bridge end the bridge and hang up both legs. The read path in
switch_core_io.c already tolerates this; give up only after 10 in a row. */
if (++session->write_decoder_errors < 10) {
status = SWITCH_STATUS_SUCCESS;
}
goto error;
}

session->write_decoder_errors = 0;
}


Expand Down