aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/channel.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/main/channel.c b/main/channel.c
index e59b43fe3..de3f6d8d7 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -778,7 +778,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) {
@@ -883,7 +883,7 @@ alertpipe_failed:
tmp->cid.cid_num = ast_strdup(cid_num);
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.
@@ -894,6 +894,10 @@ alertpipe_failed:
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';
}
}
@@ -950,7 +954,7 @@ alertpipe_failed:
* 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))) {
manager_event(EVENT_FLAG_CALL, "Newchannel",
"Channel: %s\r\n"
"ChannelState: %d\r\n"