Merge "res_pjsip_session: Check for removed stream state."
This commit is contained in:
commit
357a2f353b
3 changed files with 8 additions and 6 deletions
|
@ -1741,7 +1741,7 @@ int ast_bridge_join(struct ast_bridge *bridge,
|
||||||
|
|
||||||
ao2_ref(bridge_channel, -1);
|
ao2_ref(bridge_channel, -1);
|
||||||
|
|
||||||
join_exit:;
|
join_exit:
|
||||||
ast_bridge_run_after_callback(chan);
|
ast_bridge_run_after_callback(chan);
|
||||||
bridge_channel_impart_signal(chan);
|
bridge_channel_impart_signal(chan);
|
||||||
if (!(ast_channel_softhangup_internal_flag(chan) & AST_SOFTHANGUP_ASYNCGOTO)
|
if (!(ast_channel_softhangup_internal_flag(chan) & AST_SOFTHANGUP_ASYNCGOTO)
|
||||||
|
|
|
@ -1338,7 +1338,7 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as
|
||||||
media->desc.port = 0;
|
media->desc.port = 0;
|
||||||
media->desc.port_count = 1;
|
media->desc.port_count = 1;
|
||||||
|
|
||||||
if (remote) {
|
if (remote && remote->media[ast_stream_get_position(stream)]) {
|
||||||
pjmedia_sdp_media *remote_media = remote->media[ast_stream_get_position(stream)];
|
pjmedia_sdp_media *remote_media = remote->media[ast_stream_get_position(stream)];
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
|
|
|
@ -1455,6 +1455,10 @@ int ast_sip_session_refresh(struct ast_sip_session *session,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* No need to do anything with stream if it's media state is removed */
|
||||||
|
if (ast_stream_get_state(stream) == AST_STREAM_STATE_REMOVED) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* Enforce the configured allowed codecs on audio and video streams */
|
/* Enforce the configured allowed codecs on audio and video streams */
|
||||||
if (ast_stream_get_type(stream) == AST_MEDIA_TYPE_AUDIO || ast_stream_get_type(stream) == AST_MEDIA_TYPE_VIDEO) {
|
if (ast_stream_get_type(stream) == AST_MEDIA_TYPE_AUDIO || ast_stream_get_type(stream) == AST_MEDIA_TYPE_VIDEO) {
|
||||||
|
@ -1465,14 +1469,12 @@ int ast_sip_session_refresh(struct ast_sip_session *session,
|
||||||
ast_sip_session_media_state_free(media_state);
|
ast_sip_session_media_state_free(media_state);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ast_format_cap_get_compatible(ast_stream_get_formats(stream), session->endpoint->media.codecs, joint_cap);
|
ast_format_cap_get_compatible(ast_stream_get_formats(stream), session->endpoint->media.codecs, joint_cap);
|
||||||
if (!ast_format_cap_count(joint_cap)) {
|
if (!ast_format_cap_count(joint_cap)) {
|
||||||
ao2_ref(joint_cap, -1);
|
ao2_ref(joint_cap, -1);
|
||||||
ast_sip_session_media_state_free(media_state);
|
ast_stream_set_state(stream, AST_STREAM_STATE_REMOVED);
|
||||||
return 0;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ast_stream_set_formats(stream, joint_cap);
|
ast_stream_set_formats(stream, joint_cap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue