]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix 302 to hangup in the two cases where switch_ivr_transfer is used and not in the...
authorBrian West <brian@freeswitch.org>
Wed, 18 Aug 2010 19:16:37 +0000 (14:16 -0500)
committerBrian West <brian@freeswitch.org>
Wed, 18 Aug 2010 19:16:37 +0000 (14:16 -0500)
src/mod/endpoints/mod_sofia/sofia.c

index fdf57dcc5519c4fff03080b20edca6370a6fdaab..b9ff9e35a89b3808fec50c7e23a9a13a9011a952 100644 (file)
@@ -3975,12 +3975,14 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
                                                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Redirect: Transfering to %s %s %s\n",
                                                                                  p_contact->m_url->url_user, sip_redirect_dialplan, sip_redirect_context);
                                                switch_ivr_session_transfer(a_session, p_contact->m_url->url_user, sip_redirect_dialplan, sip_redirect_context);
+                                               switch_channel_hangup(channel, SWITCH_CAUSE_REDIRECTION_TO_NEW_DESTINATION);
                                        } else if ((!strcmp(profile->sipip, p_contact->m_url->url_host))
                                                           || (profile->extsipip && !strcmp(profile->extsipip, p_contact->m_url->url_host))
                                                           || (switch_xml_locate_domain(p_contact->m_url->url_host, NULL, &root, &domain) == SWITCH_STATUS_SUCCESS)) {
                                                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Redirect: Transfering to %s\n",
                                                                                  p_contact->m_url->url_user);
                                                switch_ivr_session_transfer(a_session, p_contact->m_url->url_user, NULL, NULL);
+                                               switch_channel_hangup(channel, SWITCH_CAUSE_REDIRECTION_TO_NEW_DESTINATION);
                                                switch_xml_free(root);
                                        } else {
                                                invite_contact = sofia_glue_strip_uri(full_contact);
@@ -3996,7 +3998,6 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
                                        free(stream.data);
 
                                        switch_core_session_rwunlock(a_session);
-                                       switch_channel_hangup(channel, SWITCH_CAUSE_REDIRECTION_TO_NEW_DESTINATION);
                                }
                        } else {
                                su_home_t *home = su_home_new(sizeof(*home));