From 2a371cd80bfb88552d2f42545718da2489e1a5ba Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Fri, 13 Sep 2013 22:19:23 +0000 Subject: Restore Dial, Queue, and FollowMe 'I' option support. The Dial, Queue, and FollowMe applications need to inhibit the bridging initial connected line exchange in order to support the 'I' option. * Replaced the pass_reference flag on ast_bridge_join() with a flags parameter to pass other flags defined by enum ast_bridge_join_flags. * Replaced the independent flag on ast_bridge_impart() with a flags parameter to pass other flags defined by enum ast_bridge_impart_flags. * Since the Dial, Queue, and FollowMe applications are now the only callers of ast_bridge_call() and ast_bridge_call_with_flags(), changed the calling contract to require the initial COLP exchange to already have been done by the caller. * Made all callers of ast_bridge_impart() check the return value. It is important. As a precaution, I also made the compiler complain now if it is not checked. * Did some cleanup in parking_tests.c as a result of checking the ast_bridge_impart() return value. An independent, but associated change is: * Reduce stack usage in ast_indicate_data() and add a dropping redundant connected line verbose message. (closes issue ASTERISK-22072) Reported by: Joshua Colp Review: https://reviewboard.asterisk.org/r/2845/ ........ Merged revisions 399136 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@399138 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- tests/test_cdr.c | 50 +++++++++++++++++++++++++------------------------- tests/test_cel.c | 6 +++--- 2 files changed, 28 insertions(+), 28 deletions(-) (limited to 'tests') diff --git a/tests/test_cdr.c b/tests/test_cdr.c index 4fd1bdb90..f1e577e76 100644 --- a/tests/test_cdr.c +++ b/tests/test_cdr.c @@ -559,7 +559,7 @@ AST_TEST_DEFINE(test_cdr_outbound_bridged_call) ast_test_validate(test, bridge != NULL); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_alice, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_alice, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); chan_bob = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_alice), 0, CHANNEL_TECH_NAME "/Bob"); ast_copy_string(bob_expected.linkedid, ast_channel_linkedid(chan_bob), sizeof(bob_expected.linkedid)); @@ -576,7 +576,7 @@ AST_TEST_DEFINE(test_cdr_outbound_bridged_call) while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_bob, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_bob, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); @@ -686,7 +686,7 @@ AST_TEST_DEFINE(test_cdr_single_bridge) ast_test_validate(test, bridge != NULL); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); @@ -761,7 +761,7 @@ AST_TEST_DEFINE(test_cdr_single_bridge_continue) ast_test_validate(test, bridge_one != NULL); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge_one, chan, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge_one, chan, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); @@ -844,14 +844,14 @@ AST_TEST_DEFINE(test_cdr_single_twoparty_bridge_a) bridge = ast_bridge_basic_new(); ast_test_validate(test, bridge != NULL); - ast_bridge_impart(bridge, chan_alice, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_alice, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); EMULATE_APP_DATA(chan_bob, 1, "Answer", ""); ast_setstate(chan_bob, AST_STATE_UP); EMULATE_APP_DATA(chan_bob, 2, "Bridge", ""); - ast_bridge_impart(bridge, chan_bob, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_bob, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); ast_bridge_depart(chan_alice); @@ -937,10 +937,10 @@ AST_TEST_DEFINE(test_cdr_single_twoparty_bridge_b) EMULATE_APP_DATA(chan_bob, 2, "Bridge", ""); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_bob, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_bob, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_alice, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_alice, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); ast_bridge_depart(chan_alice); @@ -1056,21 +1056,21 @@ AST_TEST_DEFINE(test_cdr_single_multiparty_bridge) ast_test_validate(test, bridge != NULL); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_alice, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_alice, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); EMULATE_APP_DATA(chan_bob, 1, "Answer", ""); ast_setstate(chan_bob, AST_STATE_UP); EMULATE_APP_DATA(chan_bob, 2, "Bridge", ""); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_bob, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_bob, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); EMULATE_APP_DATA(chan_charlie, 1, "Answer", ""); ast_setstate(chan_charlie, AST_STATE_UP); EMULATE_APP_DATA(chan_charlie, 2, "Bridge", ""); - ast_bridge_impart(bridge, chan_charlie, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_charlie, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); @@ -1669,8 +1669,8 @@ AST_TEST_DEFINE(test_cdr_dial_answer_twoparty_bridge_a) ast_test_validate(test, bridge != NULL); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_caller, NULL, NULL, 0); - ast_bridge_impart(bridge, chan_callee, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_caller, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_callee, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); @@ -1743,9 +1743,9 @@ AST_TEST_DEFINE(test_cdr_dial_answer_twoparty_bridge_b) bridge = ast_bridge_basic_new(); ast_test_validate(test, bridge != NULL); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_callee, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_callee, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_caller, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_caller, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); ast_bridge_depart(chan_caller); ast_bridge_depart(chan_callee); @@ -1902,18 +1902,18 @@ AST_TEST_DEFINE(test_cdr_dial_answer_multiparty) ast_test_validate(test, bridge != NULL); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_test_validate(test, 0 == ast_bridge_impart(bridge, chan_charlie, NULL, NULL, 0)); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_charlie, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_test_validate(test, 0 == ast_bridge_impart(bridge, chan_david, NULL, NULL, 0)); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_david, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_test_validate(test, 0 == ast_bridge_impart(bridge, chan_bob, NULL, NULL, 0)); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_bob, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_test_validate(test, 0 == ast_bridge_impart(bridge, chan_alice, NULL, NULL, 0)); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_alice, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_test_validate(test, 0 == ast_bridge_depart(chan_alice)); - ast_test_validate(test, 0 == ast_bridge_depart(chan_bob)); - ast_test_validate(test, 0 == ast_bridge_depart(chan_charlie)); - ast_test_validate(test, 0 == ast_bridge_depart(chan_david)); + ast_test_validate(test, !ast_bridge_depart(chan_alice)); + ast_test_validate(test, !ast_bridge_depart(chan_bob)); + ast_test_validate(test, !ast_bridge_depart(chan_charlie)); + ast_test_validate(test, !ast_bridge_depart(chan_david)); HANGUP_CHANNEL(chan_alice, AST_CAUSE_NORMAL); HANGUP_CHANNEL(chan_bob, AST_CAUSE_NORMAL); @@ -1992,9 +1992,9 @@ AST_TEST_DEFINE(test_cdr_park) ast_test_validate(test, bridge != NULL); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_alice, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_alice, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); - ast_bridge_impart(bridge, chan_bob, NULL, NULL, 0); + ast_test_validate(test, !ast_bridge_impart(bridge, chan_bob, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); while ((nanosleep(&to_sleep, &to_sleep) == -1) && (errno == EINTR)); ast_bridge_depart(chan_alice); ast_bridge_depart(chan_bob); diff --git a/tests/test_cel.c b/tests/test_cel.c index d440ebf53..c084ce394 100644 --- a/tests/test_cel.c +++ b/tests/test_cel.c @@ -109,7 +109,7 @@ static void do_sleep(void) } while (0) #define BRIDGE_EXIT(channel, bridge) do { \ - ast_test_validate(test, 0 == ast_bridge_depart(channel)); \ + ast_test_validate(test, !ast_bridge_depart(channel)); \ BRIDGE_EXIT_EVENT(channel, bridge); \ mid_test_sync(); \ } while (0) @@ -129,7 +129,7 @@ static void do_sleep(void) } while (0) #define BRIDGE_ENTER(channel, bridge) do { \ - ast_test_validate(test, 0 == ast_bridge_impart(bridge, channel, NULL, NULL, 0)); \ + ast_test_validate(test, !ast_bridge_impart(bridge, channel, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); \ do_sleep(); \ BRIDGE_ENTER_EVENT(channel, bridge); \ mid_test_sync(); \ @@ -1417,7 +1417,7 @@ AST_TEST_DEFINE(test_cel_dial_pickup) ast_test_validate(test, extra != NULL); APPEND_EVENT(chan_callee, AST_CEL_PICKUP, NULL, extra); - ast_test_validate(test, 0 == ast_do_pickup(chan_charlie, chan_callee)); + ast_test_validate(test, !ast_do_pickup(chan_charlie, chan_callee)); } /* Hang up the masqueraded zombie */ -- cgit v1.2.3