summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2009-10-22 20:07:55 +0000
committerRichard Mudgett <rmudgett@digium.com>2009-10-22 20:07:55 +0000
commit63473616dabacb645bf5bed40204a3d0bf28c792 (patch)
tree55bbfe87f8e502885ce544d37f7e457f1db1946f /channels
parent776a14386a55b5425c7e9617eff8af8b45427144 (diff)
Search for the subaddress only within the extension section of the dial string.
Dial(DAHDI/(g|G|r|R)<group#(0-63)>[c|r<cadance#>|d][/extension]) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@225446 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r--channels/sig_pri.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/channels/sig_pri.c b/channels/sig_pri.c
index 12f1958d3..92b5d0c62 100644
--- a/channels/sig_pri.c
+++ b/channels/sig_pri.c
@@ -2718,7 +2718,7 @@ int sig_pri_call(struct sig_pri_chan *p, struct ast_channel *ast, char *rdest, i
char dest[256]; /* must be same length as p->dialdest */
struct ast_party_subaddress dialed_subaddress; /* Called subaddress */
struct pri_sr *sr;
- char *c, *l, *n, *s = NULL;
+ char *c, *l, *n, *s;
#ifdef SUPPORT_USERUSER
const char *useruser;
#endif
@@ -2745,39 +2745,40 @@ int sig_pri_call(struct sig_pri_chan *p, struct ast_channel *ast, char *rdest, i
p->dialdest[0] = '\0';
p->outgoing = 1;
- /* setup dialed_subaddress if found */
- ast_party_subaddress_init(&dialed_subaddress);
- c = strrchr(dest, ':');
+ c = strchr(dest, '/');
if (c) {
- *c = '\0';
c++;
+ } else {
+ c = "";
+ }
+
+ /* setup dialed_subaddress if found */
+ ast_party_subaddress_init(&dialed_subaddress);
+ s = strchr(c, ':');
+ if (s) {
+ *s = '\0';
+ s++;
/* prefix */
/* 'n' = NSAP */
/* 'U' = odd, 'u'= even */
/* Default = NSAP */
- switch (*c) {
+ switch (*s) {
case 'U':
dialed_subaddress.odd_even_indicator = 1;
/* fall through */
case 'u':
- c++;
+ s++;
dialed_subaddress.type = 2;
break;
case 'N':
case 'n':
- c++;
+ s++;
/* default already covered with ast_party_subaddress_init */
break;
}
- dialed_subaddress.str = c;
+ dialed_subaddress.str = s;
dialed_subaddress.valid = 1;
- }
-
- c = strchr(dest, '/');
- if (c) {
- c++;
- } else {
- c = "";
+ s = NULL;
}
l = NULL;