From: Richard Mudgett Date: Thu, 22 Oct 2009 20:07:55 +0000 (+0000) Subject: Search for the subaddress only within the extension section of the dial string. X-Git-Tag: 11.0.0-beta1~3988 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=63473616dabacb645bf5bed40204a3d0bf28c792;p=thirdparty%2Fasterisk.git Search for the subaddress only within the extension section of the dial string. Dial(DAHDI/(g|G|r|R)[c|r|d][/extension]) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@225446 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/sig_pri.c b/channels/sig_pri.c index 12f1958d3c..92b5d0c620 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;