diff options
Diffstat (limited to 'main/channel.c')
-rw-r--r-- | main/channel.c | 10 |
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" |