提交 2051a86d authored 作者: Anthony Minessale's avatar Anthony Minessale

FS-6889 #resolve

上级 2514de94
...@@ -1439,7 +1439,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi ...@@ -1439,7 +1439,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
} }
} }
if (!switch_core_media_ready(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO)) {
switch_core_media_set_sdp_codec_string(tech_pvt->session, r_sdp, SDP_TYPE_RESPONSE); switch_core_media_set_sdp_codec_string(tech_pvt->session, r_sdp, SDP_TYPE_RESPONSE);
switch_channel_set_variable(tech_pvt->channel, "absolute_codec_string", switch_channel_get_variable(tech_pvt->channel, "ep_codec_string")); switch_channel_set_variable(tech_pvt->channel, "absolute_codec_string", switch_channel_get_variable(tech_pvt->channel, "ep_codec_string"));
switch_core_media_prepare_codecs(tech_pvt->session, SWITCH_TRUE); switch_core_media_prepare_codecs(tech_pvt->session, SWITCH_TRUE);
...@@ -1448,7 +1448,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi ...@@ -1448,7 +1448,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
goto end_lock; goto end_lock;
} }
}
switch_core_media_gen_local_sdp(session, SDP_TYPE_REQUEST, NULL, 0, NULL, 1); switch_core_media_gen_local_sdp(session, SDP_TYPE_REQUEST, NULL, 0, NULL, 1);
if (send_invite) { if (send_invite) {
......
...@@ -7026,7 +7026,6 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, ...@@ -7026,7 +7026,6 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
} }
goto done; goto done;
} else { } else {
if (switch_channel_test_app_flag_key("T38", tech_pvt->channel, CF_APP_T38_NEGOTIATED)) { if (switch_channel_test_app_flag_key("T38", tech_pvt->channel, CF_APP_T38_NEGOTIATED)) {
nua_respond(tech_pvt->nh, SIP_200_OK, TAG_END()); nua_respond(tech_pvt->nh, SIP_200_OK, TAG_END());
goto done; goto done;
...@@ -7038,6 +7037,12 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, ...@@ -7038,6 +7037,12 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
match = sofia_media_negotiate_sdp(session, r_sdp, SDP_TYPE_REQUEST); match = sofia_media_negotiate_sdp(session, r_sdp, SDP_TYPE_REQUEST);
} }
if (switch_channel_test_flag(channel, CF_PROXY_MODE)) {
nua_respond(tech_pvt->nh, SIP_200_OK, TAG_END());
goto done;
}
if (match && sofia_test_flag(tech_pvt, TFLAG_NOREPLY)) { if (match && sofia_test_flag(tech_pvt, TFLAG_NOREPLY)) {
sofia_clear_flag(tech_pvt, TFLAG_NOREPLY); sofia_clear_flag(tech_pvt, TFLAG_NOREPLY);
goto done; goto done;
...@@ -7057,6 +7062,11 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, ...@@ -7057,6 +7062,11 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
} }
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Processing updated SDP\n"); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Processing updated SDP\n");
} else { } else {
if (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)) {
nua_respond(tech_pvt->nh, SIP_200_OK, TAG_END());
goto done;
}
switch_channel_set_flag(tech_pvt->channel, CF_REINVITE); switch_channel_set_flag(tech_pvt->channel, CF_REINVITE);
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Reinvite Codec Error!\n"); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Reinvite Codec Error!\n");
is_ok = 0; is_ok = 0;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论