]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
normalize tests for outbound channels to use switch_channel_direction instead of...
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 16 Dec 2010 02:59:23 +0000 (20:59 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 16 Dec 2010 02:59:42 +0000 (20:59 -0600)
16 files changed:
src/mod/applications/mod_conference/mod_conference.c
src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp
src/mod/endpoints/mod_h323/mod_h323.cpp
src/mod/endpoints/mod_khomp/src/khomp_pvt.cpp
src/mod/endpoints/mod_opal/mod_opal.cpp
src/mod/endpoints/mod_skinny/mod_skinny.c
src/mod/endpoints/mod_skinny/skinny_server.c
src/mod/endpoints/mod_skypopen/mod_skypopen.c
src/mod/endpoints/mod_sofia/mod_sofia.c
src/mod/endpoints/mod_sofia/sofia.c
src/mod/endpoints/mod_sofia/sofia_glue.c
src/switch_channel.c
src/switch_core_state_machine.c
src/switch_cpp.cpp
src/switch_ivr.c
src/switch_ivr_bridge.c

index 9b170a32e030d74b1b7197df2921453d30c44138..53ce82b4cb7828aa538810ad3be9832508807c4d 100644 (file)
@@ -2456,7 +2456,7 @@ static void conference_loop_output(conference_member_t *member)
                        switch_event_destroy(&event);
                }
 
-               if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+               if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                        /* test to see if outbound channel has answered */
                        if (switch_channel_test_flag(channel, CF_ANSWERED) && !switch_test_flag(member->conference, CFLAG_ANSWERED)) {
                                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(member->session), SWITCH_LOG_DEBUG,
@@ -2599,7 +2599,7 @@ static void conference_loop_output(conference_member_t *member)
                                          switch_channel_cause2str(switch_channel_get_cause(channel)));
 
        /* if it's an outbound channel, store the release cause in the conference struct, we might need it */
-       if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+       if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                member->conference->bridge_hangup_cause = switch_channel_get_cause(channel);
        }
 
@@ -5446,7 +5446,7 @@ SWITCH_STANDARD_APP(conference_function)
                launch_conference_thread(conference);
 
        } else {
-               int enforce_security = !switch_channel_test_flag(channel, CF_OUTBOUND);
+               int enforce_security =  switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND;
                const char *pvar = switch_channel_get_variable(channel, "conference_enforce_security");
 
                if (pvar) {
@@ -5655,7 +5655,7 @@ SWITCH_STANDARD_APP(conference_function)
        } else {
                /* if we're not using "bridge:" set the conference answered flag */
                /* and this isn't an outbound channel, answer the call */
-               if (!switch_channel_test_flag(channel, CF_OUTBOUND))
+               if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND)
                        switch_set_flag(conference, CFLAG_ANSWERED);
        }
 
index 7e20b7c25e498a5632b995463af962b27f7cbb30..13e433557db1731e1a3b36fc665d65d8cc245379 100644 (file)
@@ -1324,7 +1324,6 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
                caller_profile = tech_pvt->caller_profile;
                caller_profile->destination_number = rdest;
 
-               switch_channel_set_flag(channel, CF_OUTBOUND);
                switch_set_flag(tech_pvt, TFLAG_OUTBOUND);
                switch_channel_set_state(channel, CS_INIT);
                gsmopen_call(tech_pvt, rdest, 30);
index 74fb6ae11a49fc4f0cf5ed42d037a78a889e0bb8..3d799174340a89ff9246415cdf536a00b4faf439 100644 (file)
@@ -725,7 +725,6 @@ FSH323Connection::FSH323Connection(FSH323EndPoint& endpoint, H323Transport* tran
                name += outbound_profile->destination_number;
                switch_channel_set_name(m_fsChannel, name);
 
-               switch_channel_set_flag(m_fsChannel, CF_OUTBOUND);
                switch_channel_set_state(m_fsChannel, CS_INIT);
        }
        
@@ -1508,7 +1507,7 @@ switch_status_t FSH323Connection::receive_message(switch_core_session_message_t
                        break;
                }
                case SWITCH_MESSAGE_INDICATE_ANSWER:    {
-                       if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+                       if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                                return SWITCH_STATUS_FALSE;
                        }
                        AnsweringCall(H323Connection::AnswerCallNow);
index 3abbe3ecfb197630738d9a6aca2d5950f06a7071..1b126eb277257659c45f48c39a3c9b446bf9132e 100644 (file)
@@ -868,7 +868,6 @@ switch_status_t Board::KhompPvt::justStart(switch_caller_profile_t *profile)
             _caller_profile = switch_caller_profile_clone(_session, profile);
             switch_channel_set_caller_profile(channel, _caller_profile);
 
-            switch_channel_set_flag(channel, CF_OUTBOUND);
             switch_channel_set_state(channel, CS_INIT);
         }
         else
index 8935bbb06dcfe58c0b25f5fa8420d9e38e458742..0760588019b674449d826ab62d50dcf075b08239 100644 (file)
@@ -580,7 +580,6 @@ FSConnection::FSConnection(OpalCall & call, FSEndPoint & endpoint, void* userDat
         name += outbound_profile->destination_number;
         switch_channel_set_name(m_fsChannel, name);
 
-        switch_channel_set_flag(m_fsChannel, CF_OUTBOUND);
         switch_channel_set_state(m_fsChannel, CS_INIT);
     }
 }
@@ -966,7 +965,7 @@ switch_status_t FSConnection::receive_message(switch_core_session_message_t *msg
       It would only happen if someone called switch_channel_answer() instead of switch_channel_mark_answered() on an outbound call.
       it should not do anything if someone does it by accident somewhere hense this in both cases:
 
-      if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+      if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
       return SWITCH_STATUS_FALSE;
       }
 
@@ -1025,7 +1024,7 @@ switch_status_t FSConnection::receive_message(switch_core_session_message_t *msg
         {
             int fixed = 0;
             
-            if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+            if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                 return SWITCH_STATUS_FALSE;
             }
 
index 2df8937647f86b3e3fc509e9d98a9e2acd551f4c..5320ca52d14f483b86c18fedeb5abd9025108854 100644 (file)
@@ -1080,8 +1080,6 @@ switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, swi
        switch_channel_set_caller_profile(nchannel, caller_profile);
        tech_pvt->caller_profile = caller_profile;
 
-       switch_channel_set_flag(nchannel, CF_OUTBOUND);
-
        if ((sql = switch_mprintf(
                        "INSERT INTO skinny_active_lines "
                                "(device_name, device_instance, line_instance, channel_uuid, call_id, call_state) "
index c03e3ce8af9640554aa46398ba8ff2d733dd4ea6..9bf9d9fb9b6ac3fdc9b85e62a7a7d6acf877b6d5 100644 (file)
@@ -343,7 +343,7 @@ switch_status_t skinny_session_send_call_info(switch_core_session_t *session, li
                zstr((called_party_number = switch_channel_get_variable(channel, "destination_number")))) {
                called_party_number = "0000000000";
        }
-       if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+       if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                call_type = SKINNY_INBOUND_CALL;
        } else {
                call_type = SKINNY_OUTBOUND_CALL;
@@ -1674,7 +1674,7 @@ switch_status_t skinny_handle_open_receive_channel_ack_message(listener_t *liste
                        );
 
                switch_set_flag_locked(tech_pvt, TFLAG_IO);
-               if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+               if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                        switch_channel_mark_answered(channel);
                }
                if (switch_channel_test_flag(channel, CF_HOLD)) {
index 65c1b120fdae440284cdd224e7b2fa76f328ce0a..56188a4188720a7f25280448a8ad72c844853871 100644 (file)
@@ -1364,7 +1364,6 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
                caller_profile = tech_pvt->caller_profile;
                caller_profile->destination_number = rdest;
 
-               switch_channel_set_flag(channel, CF_OUTBOUND);
                switch_mutex_lock(tech_pvt->flag_mutex);
                switch_set_flag(tech_pvt, TFLAG_OUTBOUND);
                switch_mutex_unlock(tech_pvt->flag_mutex);
index 4a3c7c04794e805b6ffd39e9de562c059d39477f..07e125ad6c105acdbeea4ebf3f2e5bc9f22fd3f7 100644 (file)
@@ -508,7 +508,7 @@ switch_status_t sofia_on_hangup(switch_core_session_t *session)
                                                TAG_IF(!zstr(bye_headers), SIPTAG_HEADER_STR(bye_headers)), TAG_END());
                        }
                } else {
-                       if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+                       if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Sending CANCEL to %s\n", switch_channel_get_name(channel));
                                if (!tech_pvt->got_bye) {
                                        switch_channel_set_variable(channel, "sip_hangup_disposition", "send_cancel");
@@ -573,7 +573,7 @@ static switch_status_t sofia_answer_channel(switch_core_session_t *session)
        char *sticky = NULL;
        const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full");
 
-       if (sofia_test_flag(tech_pvt, TFLAG_ANS) || switch_channel_test_flag(channel, CF_OUTBOUND)) {
+       if (sofia_test_flag(tech_pvt, TFLAG_ANS) || switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                return SWITCH_STATUS_SUCCESS;
        }
 
@@ -653,7 +653,7 @@ static switch_status_t sofia_answer_channel(switch_core_session_t *session)
                                switch_channel_clear_flag(channel, CF_PROXY_MODE);
                        }
 
-                       if (!switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND)) {
+                       if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) {
                                const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE);
                                tech_pvt->num_codecs = 0;
                                sofia_glue_tech_prepare_codecs(tech_pvt);
@@ -1683,7 +1683,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
                        sofia_glue_tech_set_local_sdp(tech_pvt, NULL, SWITCH_FALSE);
 
                        if (!(switch_channel_test_flag(channel, CF_ANSWERED) || switch_channel_test_flag(channel, CF_EARLY_MEDIA))) {
-                               if (!switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND)) {
+                               if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) {
                                        const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE);
 
                                        tech_pvt->num_codecs = 0;
@@ -2198,7 +2198,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
                                } else {
                                        if (sofia_test_flag(tech_pvt, TFLAG_LATE_NEGOTIATION) || !tech_pvt->iananame) {
                                                sofia_clear_flag_locked(tech_pvt, TFLAG_LATE_NEGOTIATION);
-                                               if (!switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND)) {
+                                               if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) {
                                                        const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE);
 
                                                        tech_pvt->num_codecs = 0;
index 7e4e34f4abe2bb4f7a8fb69ea1a034bd0132ed16..94eab688580a7c24765adc3153270f33bcf55288 100644 (file)
@@ -357,7 +357,7 @@ void sofia_handle_sip_i_notify(switch_core_session_t *session, int status,
                        goto error;
                }
 
-               if (!switch_channel_test_flag(channel, CF_OUTBOUND)) {
+               if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND) {
                        switch_channel_answer(channel);
                        switch_channel_set_variable(channel, "auto_answer_destination", switch_channel_get_variable(channel, "destination_number"));
                        switch_ivr_session_transfer(session, "auto_answer", NULL, NULL);
@@ -4114,7 +4114,7 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
 
                }
 
-               if (channel && sip && (status == 300 || status == 301 || status == 302 || status == 305) && switch_channel_test_flag(channel, CF_OUTBOUND)) {
+               if (channel && sip && (status == 300 || status == 301 || status == 302 || status == 305) && switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                        sip_contact_t *p_contact = sip->sip_contact;
                        int i = 0;
                        char var_name[80];
@@ -4645,7 +4645,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
                status = 183;
        }
 
-       if (channel && (status == 180 || status == 183) && switch_channel_test_flag(channel, CF_OUTBOUND)) {
+       if (channel && (status == 180 || status == 183) && switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                const char *val;
                if ((val = switch_channel_get_variable(channel, "sip_auto_answer")) && switch_true(val)) {
                        nua_notify(nh, NUTAG_NEWSUB(1), NUTAG_SUBSTATE(nua_substate_active), SIPTAG_EVENT_STR("talk"), TAG_END());
@@ -4692,7 +4692,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
 
                if (r_sdp) {
                        if (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)) {
-                               if (switch_channel_test_flag(channel, CF_PROXY_MEDIA) && !switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND)) {
+                               if (switch_channel_test_flag(channel, CF_PROXY_MEDIA) &&  switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) {
                                        switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "PROXY MEDIA");
                                }
                                sofia_set_flag_locked(tech_pvt, TFLAG_EARLY_MEDIA);
@@ -4715,7 +4715,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
                                }
                                goto done;
                        } else {
-                               if (sofia_test_flag(tech_pvt, TFLAG_LATE_NEGOTIATION) && !switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND)) {
+                               if (sofia_test_flag(tech_pvt, TFLAG_LATE_NEGOTIATION) &&  switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) {
                                        switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "DELAYED NEGOTIATION");
                                } else {
                                        if (sofia_glue_tech_media(tech_pvt, (char *) r_sdp) != SWITCH_STATUS_SUCCESS) {
@@ -4910,7 +4910,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
                                                        sofia_glue_tech_set_local_sdp(tech_pvt, NULL, SWITCH_FALSE);
 
                                                        if (!switch_channel_media_ready(channel)) {
-                                                               if (!switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND)) {
+                                                               if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) {
                                                                        //const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE);
 
                                                                        tech_pvt->num_codecs = 0;
index 803059a8da32dc2483caae44622d2538ca462699..0f52bbc8fb77b296c1653cfb434d2eaf59c9fab6 100644 (file)
@@ -4687,8 +4687,8 @@ void sofia_glue_pass_sdp(private_object_t *tech_pvt, char *sdp)
                switch_channel_set_variable(other_channel, SWITCH_B_SDP_VARIABLE, sdp);
 
                if (!sofia_test_flag(tech_pvt, TFLAG_CHANGE_MEDIA) && !sofia_test_flag(tech_pvt, TFLAG_RECOVERING) &&
-                       (switch_channel_test_flag(other_channel, CF_OUTBOUND) &&
                       switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND) && switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE))) {
+                       (switch_channel_direction(other_channel) == SWITCH_CALL_DIRECTION_OUTBOUND &&
switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_OUTBOUND && switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE))) {
                        switch_ivr_nomedia(val, SMF_FORCE);
                        sofia_set_flag_locked(tech_pvt, TFLAG_CHANGE_MEDIA);
                }
index a9c87c5954636ba487b54a38d98833daeabeedea..b0ee9f527c1f018942eb14b05609a1179d341654 100644 (file)
@@ -2622,7 +2622,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_pre_answer(switch_channel
                return SWITCH_STATUS_SUCCESS;
        }
 
-       if (!switch_channel_test_flag(channel, CF_OUTBOUND)) {
+       if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND) {
                msg.message_id = SWITCH_MESSAGE_INDICATE_PROGRESS;
                msg.from = channel->name;
                status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
@@ -2657,7 +2657,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_ring_ready_value(switch_c
                return SWITCH_STATUS_SUCCESS;
        }
 
-       if (!switch_channel_test_flag(channel, CF_OUTBOUND)) {
+       if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND) {
                msg.message_id = SWITCH_MESSAGE_INDICATE_RINGING;
                msg.from = channel->name;
                msg.numeric_arg = rv;
@@ -2800,7 +2800,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_answer(switch_channel_t *
 
        switch_assert(channel != NULL);
 
-       if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+       if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                return SWITCH_STATUS_SUCCESS;
        }
 
index c77f3f1a688698b22d7cad876f6c3303f8da9d7c..ccd6dacc9ccd9823af8385aaa552ec4f9e2bbc0b 100644 (file)
@@ -124,7 +124,7 @@ static void switch_core_standard_on_routing(switch_core_session_t *session)
                }
 
                if (!count) {
-                       if (switch_channel_test_flag(session->channel, CF_OUTBOUND)) {
+                       if (switch_channel_direction(session->channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                                if (switch_channel_test_flag(session->channel, CF_ANSWERED)) {
                                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG,
                                                                          "No Dialplan on answered channel, changing state to HANGUP\n");
index 40462db567eaefa6a8cd5adcbda13052a8132c9a..1ba850d7e4aab0430c34fdc63da9c8b7264101b8 100644 (file)
@@ -1206,7 +1206,7 @@ SWITCH_DECLARE(void) bridge(CoreSession &session_a, CoreSession &session_b)
 
                if (switch_channel_ready(channel_a) && switch_channel_ready(channel_b)) {
                        session_a.begin_allow_threads();
-                       if (!switch_channel_test_flag(channel_a, CF_OUTBOUND) && !switch_channel_media_ready(channel_a)) {
+                       if (switch_channel_direction(channel_a) == SWITCH_CALL_DIRECTION_INBOUND && !switch_channel_media_ready(channel_a)) {
                                switch_channel_pre_answer(channel_a);
                        }
 
index 5cd4d4d34ff7a1ed3491386cb1a2644ad562cbc2..494871ec8a3d11d102949b2c7efb4079b6511b87 100644 (file)
@@ -140,7 +140,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_sleep(switch_core_session_t *session,
        const char *var;
 
        /*
-          if (!switch_channel_test_flag(channel, CF_OUTBOUND) && !switch_channel_test_flag(channel, CF_PROXY_MODE) && 
+          if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND && !switch_channel_test_flag(channel, CF_PROXY_MODE) && 
           !switch_channel_media_ready(channel) && !switch_channel_test_flag(channel, CF_SERVICE)) {
           if ((status = switch_channel_pre_answer(channel)) != SWITCH_STATUS_SUCCESS) {
           switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot establish media.\n");
index afd33f16a0fd3be2cb4ba2fdea22ef9d49834826..ceab8b1b963625172e689061bd012188c78ca65d 100644 (file)
@@ -435,8 +435,8 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj)
                        switch_channel_t *un = ans_a ? chan_b : chan_a;
                        switch_channel_t *a = un == chan_b ? chan_a : chan_b;
 
-                       if (!switch_channel_test_flag(un, CF_OUTBOUND)) {
-                               if (switch_channel_test_flag(a, CF_OUTBOUND) || (un == chan_a && !originator)) {
+                       if (switch_channel_direction(un) == SWITCH_CALL_DIRECTION_INBOUND) {
+                               if (switch_channel_direction(a) == SWITCH_CALL_DIRECTION_OUTBOUND || (un == chan_a && !originator)) {
                                        switch_channel_pass_callee_id(a, un);
                                }