提交 b35ac6b3 authored 作者: Anthony Minessale's avatar Anthony Minessale

fix auto_simplify

上级 de53b398
......@@ -1097,8 +1097,9 @@ static switch_status_t sofia_read_frame(switch_core_session_t *session, switch_f
if (sofia_test_flag(tech_pvt, TFLAG_SIMPLIFY) && sofia_test_flag(tech_pvt, TFLAG_GOT_ACK)) {
sofia_glue_tech_simplify(tech_pvt);
sofia_clear_flag(tech_pvt, TFLAG_SIMPLIFY);
if (sofia_glue_tech_simplify(tech_pvt)) {
sofia_clear_flag(tech_pvt, TFLAG_SIMPLIFY);
}
}
while (sofia_test_flag(tech_pvt, TFLAG_IO) && tech_pvt->read_frame.datalen == 0) {
......@@ -1714,7 +1715,9 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
switch_channel_set_variable(channel, SOFIA_REPLACES_HEADER, NULL);
sofia_set_flag(tech_pvt, TFLAG_SIMPLIFY);
if (switch_true(switch_channel_get_variable(tech_pvt->channel, "sip_auto_simplify"))) {
sofia_set_flag(tech_pvt, TFLAG_SIMPLIFY);
}
if (switch_rtp_ready(tech_pvt->rtp_session)) {
......
......@@ -1191,7 +1191,7 @@ uint32_t sofia_reg_reg_count(sofia_profile_t *profile, const char *user, const c
void sofia_glue_copy_t38_options(switch_t38_options_t *t38_options, switch_core_session_t *session);
switch_t38_options_t *sofia_glue_extract_t38_options(switch_core_session_t *session, const char *r_sdp);
char *sofia_glue_get_multipart(switch_core_session_t *session, const char *prefix, const char *sdp, char **mp_type);
void sofia_glue_tech_simplify(private_object_t *tech_pvt);
int sofia_glue_tech_simplify(private_object_t *tech_pvt);
switch_console_callback_match_t *sofia_reg_find_reg_url_multi(sofia_profile_t *profile, const char *user, const char *host);
switch_console_callback_match_t *sofia_reg_find_reg_url_with_positive_expires_multi(sofia_profile_t *profile, const char *user, const char *host, time_t reg_time, const char *contact_str, long exptime);
switch_bool_t sofia_glue_profile_exists(const char *key);
......
......@@ -6785,21 +6785,19 @@ switch_status_t sofia_glue_send_notify(sofia_profile_t *profile, const char *use
}
void sofia_glue_tech_simplify(private_object_t *tech_pvt)
int sofia_glue_tech_simplify(private_object_t *tech_pvt)
{
const char *uuid, *network_addr_a = NULL, *network_addr_b = NULL, *simplify, *simplify_other_channel;
switch_channel_t *other_channel = NULL, *inbound_channel = NULL;
switch_core_session_t *other_session = NULL, *inbound_session = NULL;
uint8_t did_simplify = 0;
int r = 0;
if (!switch_channel_test_flag(tech_pvt->channel, CF_ANSWERED) || switch_channel_test_flag(tech_pvt->channel, CF_SIMPLIFY)) {
return;
goto end;
}
if ((uuid = switch_channel_get_partner_uuid(tech_pvt->channel))
&& (other_session = switch_core_session_locate(uuid))) {
if ((uuid = switch_channel_get_partner_uuid(tech_pvt->channel)) && (other_session = switch_core_session_locate(uuid))) {
other_channel = switch_core_session_get_channel(other_session);
......@@ -6807,6 +6805,8 @@ void sofia_glue_tech_simplify(private_object_t *tech_pvt)
simplify = switch_channel_get_variable(tech_pvt->channel, "sip_auto_simplify");
simplify_other_channel = switch_channel_get_variable(other_channel, "sip_auto_simplify");
r = 1;
if (switch_true(simplify) && !switch_channel_test_flag(tech_pvt->channel, CF_BRIDGE_ORIGINATOR)) {
network_addr_a = switch_channel_get_variable(tech_pvt->channel, "network_addr");
network_addr_b = switch_channel_get_variable(other_channel, "network_addr");
......@@ -6851,6 +6851,11 @@ void sofia_glue_tech_simplify(private_object_t *tech_pvt)
switch_core_session_rwunlock(other_session);
}
end:
return r;
}
void sofia_glue_pause_jitterbuffer(switch_core_session_t *session, switch_bool_t on)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论