diff options
author | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-10-22 20:07:55 +0000 |
---|---|---|
committer | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-10-22 20:07:55 +0000 |
commit | 6af6f83daf3e6a7352b9fa7a238b2cacfb23ac69 (patch) | |
tree | 55bbfe87f8e502885ce544d37f7e457f1db1946f /channels/sig_pri.c | |
parent | 226347511b4cf46028c8178472c1416a1e91b1f9 (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: http://svn.digium.com/svn/asterisk/trunk@225446 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/sig_pri.c')
-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; |