[commit] r9734 - freeswitch/trunk/src/mod/endpoints/mod_sofia
Author: anthm Date: Mon Sep 29 11:15:53 2008 New Revision: 9734 Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Log: fix invalid one legged xfer Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Mon Sep 29 11:15:53 2008 @@ -926,7 +926,7 @@ } break; case SWITCH_MESSAGE_INDICATE_BRIDGE: - +#if 0 if (switch_test_flag(tech_pvt, TFLAG_XFER)) { switch_clear_flag_locked(tech_pvt, TFLAG_XFER); if (msg->pointer_arg) { @@ -935,7 +935,6 @@ if ((a_session = switch_core_session_locate(tech_pvt->xferto))) { private_object_t *a_tech_pvt = switch_core_session_get_private(a_session); private_object_t *b_tech_pvt = switch_core_session_get_private(b_session); - switch_set_flag_locked(a_tech_pvt, TFLAG_REINVITE); a_tech_pvt->remote_sdp_audio_ip = switch_core_session_strdup(a_session, b_tech_pvt->remote_sdp_audio_ip); a_tech_pvt->remote_sdp_audio_port = b_tech_pvt->remote_sdp_audio_port; @@ -953,6 +952,8 @@ goto end; } } +#endif + /* if (tech_pvt->rtp_session && switch_test_flag(tech_pvt, TFLAG_TIMER)) { switch_rtp_clear_flag(tech_pvt->rtp_session, SWITCH_RTP_FLAG_USE_TIMER); Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Mon Sep 29 11:15:53 2008 @@ -2920,12 +2920,15 @@ br_a = switch_channel_get_variable(channel_a, SWITCH_SIGNAL_BOND_VARIABLE); br_b = switch_channel_get_variable(channel_b, SWITCH_SIGNAL_BOND_VARIABLE); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Attended Transfer [%s][%s]\n", switch_str_nil(br_a), - switch_str_nil(br_b)); - + if (br_a && br_b) { switch_core_session_t *new_b_session = NULL, *a_session = NULL, *tmp = NULL; - + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Attended Transfer [%s][%s]\n", + switch_str_nil(br_a), + switch_str_nil(br_b)); + + if ((profile->media_options & MEDIA_OPT_BYPASS_AFTER_ATT_XFER) && (tmp = switch_core_session_locate(br_b))) { switch_channel_t *tchannel = switch_core_session_get_channel(tmp); switch_channel_set_variable(tchannel, SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE, "true"); @@ -2953,6 +2956,7 @@ } } else { if (!br_a && !br_b) { +#if 0 switch_set_flag_locked(tech_pvt, TFLAG_NOHUP); switch_set_flag_locked(b_tech_pvt, TFLAG_XFER); b_tech_pvt->xferto = switch_core_session_strdup(b_session, switch_core_session_get_uuid(session)); @@ -2962,6 +2966,14 @@ SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), NUTAG_SUBSTATE(nua_substate_terminated), SIPTAG_PAYLOAD_STR("SIP/2.0 200 OK"), SIPTAG_EVENT_STR(etmp), TAG_END()); +#endif + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Cannot transfer channels that are not in a bridge.\n"); + nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + NUTAG_SUBSTATE(nua_substate_terminated), + SIPTAG_PAYLOAD_STR("SIP/2.0 403 Forbidden"), SIPTAG_EVENT_STR(etmp), TAG_END()); + + } else { switch_core_session_t *t_session; switch_channel_t *hup_channel;
participants (1)
-
Freeswitch SVN