summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrett Bryant <bbryant@digium.com>2010-09-28 18:24:11 +0000
committerBrett Bryant <bbryant@digium.com>2010-09-28 18:24:11 +0000
commit8e22acde1bae5fa5a1c9c7d4514c707cacf8420b (patch)
tree40c14cd11ef15818590cc2df4a849331478a7f5d
parent7157b4815018bde5e6066f49ae9a6ab087694018 (diff)
Merged revisions 289099 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r289099 | bbryant | 2010-09-28 14:18:02 -0400 (Tue, 28 Sep 2010) | 28 lines Merged revisions 289095 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r289095 | bbryant | 2010-09-28 14:14:19 -0400 (Tue, 28 Sep 2010) | 21 lines Merged revisions 289094 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r289094 | bbryant | 2010-09-28 14:10:19 -0400 (Tue, 28 Sep 2010) | 14 lines Fixes an issue with the Newchannel AMI event during the Masquerading process. Fixes an issue with the Newchannel AMI event during the Masquerading process, where no Newchannel AMI event was generated for the psuedo channel used during the masquerading process. (closes issue #17987) Reported by: RadicAlish Patches: newchannel.patch.txt uploaded by RadicAlish (license 1122) Tested by: RadicAlish Review: https://reviewboard.asterisk.org/r/937/ ........ ................ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@289131 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--main/channel.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/main/channel.c b/main/channel.c
index 880220e91..551e66d6a 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -1066,7 +1066,7 @@ __ast_channel_alloc_ap(int needqueue, int state, const char *cid_num, const char
int x;
int flags;
struct varshead *headp;
- char *tech = "";
+ char *tech = "", *tech2 = NULL;
/* If shutting down, don't allocate any new channels */
if (shutting_down) {
@@ -1190,7 +1190,7 @@ __ast_channel_alloc_ap(int needqueue, int state, const char *cid_num, const char
}
if (!ast_strlen_zero(name_fmt)) {
- char *slash;
+ char *slash, *slash2;
/* Almost every channel is calling this function, and setting the name via the ast_string_field_build() call.
* And they all use slightly different formats for their name string.
* This means, to set the name here, we have to accept variable args, and call the string_field_build from here.
@@ -1201,6 +1201,10 @@ __ast_channel_alloc_ap(int needqueue, int state, const char *cid_num, const char
ast_string_field_build_va(tmp, name, name_fmt, ap1, ap2);
tech = ast_strdupa(tmp->name);
if ((slash = strchr(tech, '/'))) {
+ if ((slash2 = strchr(slash + 1, '/'))) {
+ tech2 = slash + 1;
+ *slash2 = '\0';
+ }
*slash = '\0';
}
} else {
@@ -1261,7 +1265,7 @@ __ast_channel_alloc_ap(int needqueue, int state, const char *cid_num, const char
* proper and correct place to make this call, but you sure do have to pass
* a lot of data into this func to do it here!
*/
- if (ast_get_channel_tech(tech)) {
+ if (ast_get_channel_tech(tech) || (tech2 && ast_get_channel_tech(tech2))) {
ast_manager_event(tmp, EVENT_FLAG_CALL, "Newchannel",
"Channel: %s\r\n"
"ChannelState: %d\r\n"