diff options
author | Richard Mudgett <rmudgett@digium.com> | 2009-10-22 20:07:55 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2009-10-22 20:07:55 +0000 |
commit | 63473616dabacb645bf5bed40204a3d0bf28c792 (patch) | |
tree | 55bbfe87f8e502885ce544d37f7e457f1db1946f /channels | |
parent | 776a14386a55b5425c7e9617eff8af8b45427144 (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.c | 33 |
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; |