diff options
author | Joshua Colp <jcolp@digium.com> | 2013-12-18 19:28:05 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2013-12-18 19:28:05 +0000 |
commit | e2630fcd516b8f794bf342d9fd267b0c905e79ce (patch) | |
tree | f6cd5cf70eb9af24b239d78391aed7472c09dd7f /tests/test_cdr.c | |
parent | e23b8d19a49d4ee4faf3dc167ddb7ba7afe36a46 (diff) |
channels: Return allocated channels locked.
This change makes ast_channel_alloc return allocated channels
locked. By doing so no other thread can acquire, lock, and manipulate
the channel before it is completely set up.
(closes issue AST-1256)
Review: https://reviewboard.asterisk.org/r/3067/
........
Merged revisions 404204 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@404210 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'tests/test_cdr.c')
-rw-r--r-- | tests/test_cdr.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/test_cdr.c b/tests/test_cdr.c index 6d1626b36..e70a0641b 100644 --- a/tests/test_cdr.c +++ b/tests/test_cdr.c @@ -238,6 +238,7 @@ static void clear_mock_cdr_backend(void) ast_channel_set_caller((channel_var), (caller_id), NULL); \ ast_copy_string((expected_record)->uniqueid, ast_channel_uniqueid((channel_var)), sizeof((expected_record)->uniqueid)); \ ast_copy_string((expected_record)->linkedid, ast_channel_linkedid((channel_var)), sizeof((expected_record)->linkedid)); \ + ast_channel_unlock((channel_var)); \ } while (0) /*! \brief Create a \ref test_cdr_chan_tech for Bob, and set the expected @@ -247,6 +248,7 @@ static void clear_mock_cdr_backend(void) ast_channel_set_caller((channel_var), (caller_id), NULL); \ ast_copy_string((expected_record)->uniqueid, ast_channel_uniqueid((channel_var)), sizeof((expected_record)->uniqueid)); \ ast_copy_string((expected_record)->linkedid, ast_channel_linkedid((channel_var)), sizeof((expected_record)->linkedid)); \ + ast_channel_unlock((channel_var)); \ } while (0) /*! \brief Create a \ref test_cdr_chan_tech for Charlie, and set the expected @@ -256,6 +258,7 @@ static void clear_mock_cdr_backend(void) ast_channel_set_caller((channel_var), (caller_id), NULL); \ ast_copy_string((expected_record)->uniqueid, ast_channel_uniqueid((channel_var)), sizeof((expected_record)->uniqueid)); \ ast_copy_string((expected_record)->linkedid, ast_channel_linkedid((channel_var)), sizeof((expected_record)->linkedid)); \ + ast_channel_unlock((channel_var)); \ } while (0) /*! \brief Create a \ref test_cdr_chan_tech for Charlie, and set the expected @@ -265,6 +268,7 @@ static void clear_mock_cdr_backend(void) ast_channel_set_caller((channel_var), (caller_id), NULL); \ ast_copy_string((expected_record)->uniqueid, ast_channel_uniqueid((channel_var)), sizeof((expected_record)->uniqueid)); \ ast_copy_string((expected_record)->linkedid, ast_channel_linkedid((channel_var)), sizeof((expected_record)->linkedid)); \ + ast_channel_unlock((channel_var)); \ } while (0) /*! \brief Emulate a channel entering into an application */ @@ -563,6 +567,7 @@ AST_TEST_DEFINE(test_cdr_outbound_bridged_call) 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_channel_unlock(chan_bob); ast_copy_string(bob_expected.linkedid, ast_channel_linkedid(chan_bob), sizeof(bob_expected.linkedid)); ast_copy_string(bob_expected.uniqueid, ast_channel_uniqueid(chan_bob), sizeof(bob_expected.uniqueid)); ast_set_flag(ast_channel_flags(chan_bob), AST_FLAG_OUTGOING); @@ -1133,6 +1138,7 @@ AST_TEST_DEFINE(test_cdr_dial_unanswered) EMULATE_APP_DATA(chan_caller, 1, "Dial", "CDRTestChannel/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1194,6 +1200,7 @@ AST_TEST_DEFINE(test_cdr_dial_busy) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1254,6 +1261,7 @@ AST_TEST_DEFINE(test_cdr_dial_congestion) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1314,6 +1322,7 @@ AST_TEST_DEFINE(test_cdr_dial_unavailable) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1375,6 +1384,7 @@ AST_TEST_DEFINE(test_cdr_dial_caller_cancel) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1476,14 +1486,17 @@ AST_TEST_DEFINE(test_cdr_dial_parallel_failed) /* Outbound channels are created */ chan_bob = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_bob); ast_set_flag(ast_channel_flags(chan_bob), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_bob, 0, "AppDial", "(Outgoing Line)"); chan_charlie = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "300", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Charlie"); + ast_channel_unlock(chan_charlie); ast_set_flag(ast_channel_flags(chan_charlie), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_charlie, 0, "AppDial", "(Outgoing Line)"); chan_david = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "400", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/David"); + ast_channel_unlock(chan_david); ast_set_flag(ast_channel_flags(chan_david), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_david, 0, "AppDial", "(Outgoing Line)"); @@ -1589,6 +1602,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_no_bridge) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); COPY_IDS(chan_callee, &bob_expected_one); @@ -1656,6 +1670,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_twoparty_bridge_a) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1731,6 +1746,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_twoparty_bridge_b) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, ast_channel_linkedid(chan_caller), 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1889,6 +1905,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_multiparty) EMULATE_APP_DATA(chan_alice, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_bob = ast_channel_alloc(0, AST_STATE_DOWN, "200", "Bob", "200", "200", "default", NULL, 0, CHANNEL_TECH_NAME "/Bob"); + ast_channel_unlock(chan_bob); ast_set_flag(ast_channel_flags(chan_bob), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_bob, 0, "AppDial", "(Outgoing Line)"); ast_copy_string(bob_expected_one.uniqueid, ast_channel_uniqueid(chan_bob), sizeof(bob_expected_one.uniqueid)); @@ -1902,6 +1919,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_multiparty) ast_copy_string(charlie_expected_two.linkedid, ast_channel_linkedid(chan_alice), sizeof(charlie_expected_two.linkedid)); chan_david = ast_channel_alloc(0, AST_STATE_DOWN, "400", "David", "400", "400", "default", NULL, 0, CHANNEL_TECH_NAME "/David"); + ast_channel_unlock(chan_david); ast_set_flag(ast_channel_flags(chan_david), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_david, 0, "AppDial", "(Outgoing Line)"); |