mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 03:20:57 +00:00
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
This commit is contained in:
@@ -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)");
|
||||
|
||||
|
Reference in New Issue
Block a user