]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Use strrchr() so SoftHangup will correctly truncate multi-hyphen channel names
authorDwayne M. Hubbard <dwayne.hubbard@gmail.com>
Tue, 1 Sep 2009 23:04:52 +0000 (23:04 +0000)
committerDwayne M. Hubbard <dwayne.hubbard@gmail.com>
Tue, 1 Sep 2009 23:04:52 +0000 (23:04 +0000)
In general channel names are in the form Foo/Bar-Z, but the channel name
could have multiple hyphens and look like Foo/B-a-r-Z.  Use strrchr to
truncate the channel name at the last hyphen.

(closes issue #15810)
Reported by: dhubbard
Patches:
      dw-softhangup-1.4.patch uploaded by dhubbard (license 733)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@215270 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_softhangup.c

index 018edc07d7066fbfa1d62d28d5cc6f284b8cef1e..b13eadc08c1d9a80863c393ad6b592da50d519e5 100644 (file)
@@ -79,11 +79,13 @@ static int softhangup_exec(struct ast_channel *chan, void *data)
                /* XXX watch out, i think it is wrong to access c-> after unlocking! */
                if (all) {
                        /* CAPI is set up like CAPI[foo/bar]/clcnt */ 
-                       if (!strcmp(c->tech->type, "CAPI")) 
+                       if (!strcmp(c->tech->type, "CAPI")) {
                                cut = strrchr(name,'/');
                        /* Basically everything else is Foo/Bar-Z */
-                       else
-                               cut = strchr(name,'-');
+                       } else {
+                               /* use strrchr() because Foo/Bar-Z could actually be Foo/B-a-r-Z */
+                               cut = strrchr(name,'-');
+                       }
                        /* Get rid of what we've cut */
                        if (cut)
                                *cut = 0;