FS-3688 revert

This commit is contained in:
Anthony Minessale 2011-11-18 17:00:30 -06:00
parent 4c13e7c095
commit 71ecf081f0
3 changed files with 19 additions and 25 deletions

View File

@ -508,7 +508,6 @@ switch_status_t sofia_on_hangup(switch_core_session_t *session)
} }
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Sending BYE to %s\n", switch_channel_get_name(channel)); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Sending BYE to %s\n", switch_channel_get_name(channel));
if (!sofia_test_flag(tech_pvt, TFLAG_BYE)) { if (!sofia_test_flag(tech_pvt, TFLAG_BYE)) {
switch_ivr_parse_all_signal_data(session);
nua_bye(tech_pvt->nh, nua_bye(tech_pvt->nh,
TAG_IF(!zstr(reason), SIPTAG_REASON_STR(reason)), TAG_IF(!zstr(reason), SIPTAG_REASON_STR(reason)),
TAG_IF(call_info, SIPTAG_CALL_INFO_STR(call_info)), TAG_IF(call_info, SIPTAG_CALL_INFO_STR(call_info)),
@ -522,7 +521,6 @@ switch_status_t sofia_on_hangup(switch_core_session_t *session)
switch_channel_set_variable(channel, "sip_hangup_disposition", "send_cancel"); switch_channel_set_variable(channel, "sip_hangup_disposition", "send_cancel");
} }
if (!sofia_test_flag(tech_pvt, TFLAG_BYE)) { if (!sofia_test_flag(tech_pvt, TFLAG_BYE)) {
switch_ivr_parse_all_signal_data(session);
nua_cancel(tech_pvt->nh, nua_cancel(tech_pvt->nh,
TAG_IF(!zstr(reason), SIPTAG_REASON_STR(reason)), TAG_IF(!zstr(bye_headers), SIPTAG_HEADER_STR(bye_headers)), TAG_END()); TAG_IF(!zstr(reason), SIPTAG_REASON_STR(reason)), TAG_IF(!zstr(bye_headers), SIPTAG_HEADER_STR(bye_headers)), TAG_END());
} }
@ -1415,7 +1413,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
if (switch_core_session_in_thread(session)) { if (switch_core_session_in_thread(session)) {
de->session = session; de->session = session;
} }
sofia_process_dispatch_event(&de, SWITCH_TRUE); sofia_process_dispatch_event(&de);
switch_mutex_unlock(tech_pvt->sofia_mutex); switch_mutex_unlock(tech_pvt->sofia_mutex);
goto end; goto end;
} }
@ -1907,6 +1905,12 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
case SWITCH_MESSAGE_INDICATE_PHONE_EVENT: case SWITCH_MESSAGE_INDICATE_PHONE_EVENT:
{ {
switch_channel_set_flag(channel, CF_REQ_MEDIA);
sofia_glue_do_invite(session);
#if 0
const char *event = "talk"; const char *event = "talk";
if (!zstr(msg->string_arg) && strcasecmp(msg->string_arg, event)) { if (!zstr(msg->string_arg) && strcasecmp(msg->string_arg, event)) {
@ -1923,6 +1927,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
} else { } else {
nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), NUTAG_SUBSTATE(nua_substate_active), SIPTAG_EVENT_STR(event), TAG_END()); nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), NUTAG_SUBSTATE(nua_substate_active), SIPTAG_EVENT_STR(event), TAG_END());
} }
#endif
} }
break; break;
case SWITCH_MESSAGE_INDICATE_SIMPLIFY: case SWITCH_MESSAGE_INDICATE_SIMPLIFY:

View File

@ -1138,5 +1138,5 @@ void sofia_glue_check_dtmf_type(private_object_t *tech_pvt);
void sofia_glue_parse_rtp_bugs(switch_rtp_bug_flag_t *flag_pole, const char *str); void sofia_glue_parse_rtp_bugs(switch_rtp_bug_flag_t *flag_pole, const char *str);
char *sofia_glue_gen_contact_str(sofia_profile_t *profile, sip_t const *sip, sofia_dispatch_event_t *de, sofia_nat_parse_t *np); char *sofia_glue_gen_contact_str(sofia_profile_t *profile, sip_t const *sip, sofia_dispatch_event_t *de, sofia_nat_parse_t *np);
void sofia_glue_pause_jitterbuffer(switch_core_session_t *session, switch_bool_t on); void sofia_glue_pause_jitterbuffer(switch_core_session_t *session, switch_bool_t on);
void sofia_process_dispatch_event(sofia_dispatch_event_t **dep, switch_bool_t do_callback); void sofia_process_dispatch_event(sofia_dispatch_event_t **dep);

View File

@ -870,7 +870,7 @@ static void our_sofia_event_callback(nua_event_t event,
if (sofia_private && sofia_private->is_call && sofia_private->de) { if (sofia_private && sofia_private->is_call && sofia_private->de) {
sofia_dispatch_event_t *qde = sofia_private->de; sofia_dispatch_event_t *qde = sofia_private->de;
sofia_private->de = NULL; sofia_private->de = NULL;
sofia_process_dispatch_event(&qde, SWITCH_TRUE); sofia_process_dispatch_event(&qde);
} }
profile->last_sip_event = switch_time_now(); profile->last_sip_event = switch_time_now();
@ -1192,28 +1192,17 @@ static void our_sofia_event_callback(nua_event_t event,
} }
} }
void sofia_process_dispatch_event(sofia_dispatch_event_t **dep, switch_bool_t do_callback) void sofia_process_dispatch_event(sofia_dispatch_event_t **dep)
{ {
sofia_dispatch_event_t *de = *dep; sofia_dispatch_event_t *de = *dep;
nua_handle_t *nh = de->nh; nua_handle_t *nh = de->nh;
nua_t *nua = de->nua; nua_t *nua = de->nua;
sofia_profile_t *profile = de->profile; sofia_profile_t *profile = de->profile;
nua_event_t event;
*dep = NULL; *dep = NULL;
event = de->data->e_event;
if (de->session && switch_channel_down_nosig(switch_core_session_get_channel(de->session))) {
if (event == nua_i_invite) {
nua_respond(nh, 481, "Channel Hanging Up", TAG_END());
}
do_callback = SWITCH_FALSE;
}
if (do_callback) {
our_sofia_event_callback(de->data->e_event, de->data->e_status, de->data->e_phrase, de->nua, de->profile, our_sofia_event_callback(de->data->e_event, de->data->e_status, de->data->e_phrase, de->nua, de->profile,
de->nh, nua_handle_magic(de->nh), de->sip, de, (tagi_t *) de->data->e_tags); de->nh, nua_handle_magic(de->nh), de->sip, de, (tagi_t *) de->data->e_tags);
}
nua_destroy_event(de->event); nua_destroy_event(de->event);
su_free(nh->nh_home, de); su_free(nh->nh_home, de);
@ -1237,7 +1226,7 @@ void *SWITCH_THREAD_FUNC sofia_msg_thread_run(switch_thread_t *thread, void *obj
while(switch_queue_pop(q, &pop) == SWITCH_STATUS_SUCCESS && pop) { while(switch_queue_pop(q, &pop) == SWITCH_STATUS_SUCCESS && pop) {
sofia_dispatch_event_t *de = (sofia_dispatch_event_t *) pop; sofia_dispatch_event_t *de = (sofia_dispatch_event_t *) pop;
sofia_process_dispatch_event(&de, SWITCH_TRUE); sofia_process_dispatch_event(&de);
switch_cond_next(); switch_cond_next();
} }
@ -1288,7 +1277,7 @@ static void sofia_queue_message(sofia_dispatch_event_t *de)
int idx = 0; int idx = 0;
if (mod_sofia_globals.running == 0) { if (mod_sofia_globals.running == 0) {
sofia_process_dispatch_event(&de, SWITCH_TRUE); sofia_process_dispatch_event(&de);
return; return;
} }
@ -1351,7 +1340,7 @@ void sofia_event_callback(nua_event_t event,
switch_core_session_t *session; switch_core_session_t *session;
if (!zstr(sofia_private->uuid)) { if (!zstr(sofia_private->uuid)) {
if ((session = switch_core_session_force_locate(sofia_private->uuid))) { if ((session = switch_core_session_locate(sofia_private->uuid))) {
if (switch_core_session_running(session)) { if (switch_core_session_running(session)) {
switch_core_session_queue_signal_data(session, de); switch_core_session_queue_signal_data(session, de);
} else { } else {
@ -7194,6 +7183,8 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_
char sip_acl_authed_by[512] = ""; char sip_acl_authed_by[512] = "";
char sip_acl_token[512] = ""; char sip_acl_token[512] = "";
profile->ib_calls++;
if (sess_count >= sess_max || !sofia_test_pflag(profile, PFLAG_RUNNING)) { if (sess_count >= sess_max || !sofia_test_pflag(profile, PFLAG_RUNNING)) {
nua_respond(nh, 503, "Maximum Calls In Progress", SIPTAG_RETRY_AFTER_STR("300"), TAG_END()); nua_respond(nh, 503, "Maximum Calls In Progress", SIPTAG_RETRY_AFTER_STR("300"), TAG_END());
goto fail; goto fail;
@ -8257,8 +8248,6 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Setting NAT mode based on %s\n", is_nat); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Setting NAT mode based on %s\n", is_nat);
switch_channel_set_variable(channel, "sip_nat_detected", "true"); switch_channel_set_variable(channel, "sip_nat_detected", "true");
} }
profile->ib_calls++;
return; return;
} }