]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add process_cdr variable
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 14 Jan 2008 15:37:00 +0000 (15:37 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 14 Jan 2008 15:37:00 +0000 (15:37 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7212 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_core_state_machine.c

index d2dc1e2665cff72ccf6b8ffa1612a0a2614efaf3..97f01b5cc0bce6973b527f38ced30017a8f42d45 100644 (file)
@@ -420,10 +420,17 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session_t *session)
                                goto done;
                        case CS_HANGUP:     /* Deactivate and end the thread */
                                {
-                                       const char *var = NULL;
-
-                                       if (!(var = switch_channel_get_variable(session->channel, SWITCH_PROCESS_CDR_VARIABLE)) || !switch_true(var)) {
-                                               do_extra_handlers = 0;
+                                       const char *var = switch_channel_get_variable(session->channel, SWITCH_PROCESS_CDR_VARIABLE);
+
+                                       if (!switch_strlen_zero(var)) {
+                                               
+                                               if (!strcasecmp(var, "a_only") && !switch_channel_test_flag(session->channel, CF_ORIGINATOR)) {
+                                                       do_extra_handlers = 0;
+                                               } else if (!strcasecmp(var, "b_only") && switch_channel_test_flag(session->channel, CF_ORIGINATOR)) {
+                                                       do_extra_handlers = 0;
+                                               } else if (!switch_true(var)) {
+                            do_extra_handlers = 0;
+                                               }
                                        }
                                        
                                        STATE_MACRO(hangup, "HANGUP");