mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-02 20:08:17 +00:00
Merged revisions 144025 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r144025 | mmichelson | 2008-09-23 10:37:00 -0500 (Tue, 23 Sep 2008) | 16 lines When a promiscuous redirect contained both a user and host portion in the Contact URI and specifies a transport, the parsing done in parse_moved_contact resulted in a malformed URI. This commit fixes the parsing so that a proper Dial string may be formed when the forwarded call is placed. (closes issue #13523) Reported by: mattdarnell Patches: 13523v2.patch uploaded by putnopvut (license 60) Tested by: mattdarnell ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@144026 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -14595,6 +14595,7 @@ static void parse_moved_contact(struct sip_pvt *p, struct sip_request *req)
|
||||
p->socket.type = transport;
|
||||
|
||||
if (ast_test_flag(&p->flags[0], SIP_PROMISCREDIR)) {
|
||||
char *host = NULL;
|
||||
if (!strncasecmp(s, "sip:", 4))
|
||||
s += 4;
|
||||
else if (!strncasecmp(s, "sips:", 5))
|
||||
@@ -14602,9 +14603,16 @@ static void parse_moved_contact(struct sip_pvt *p, struct sip_request *req)
|
||||
e = strchr(s, '/');
|
||||
if (e)
|
||||
*e = '\0';
|
||||
ast_debug(2, "Found promiscuous redirection to 'SIP/::::%s@%s'\n", get_transport(transport), s);
|
||||
if (p->owner)
|
||||
ast_string_field_build(p->owner, call_forward, "SIP/::::%s@%s", get_transport(transport), s);
|
||||
if ((host = strchr(s, '@'))) {
|
||||
*host++ = '\0';
|
||||
ast_debug(2, "Found promiscuous redirection to 'SIP/%s::::%s@%s'\n", s, get_transport(transport), host);
|
||||
if (p->owner)
|
||||
ast_string_field_build(p->owner, call_forward, "SIP/%s::::%s@%s", s, get_transport(transport), host);
|
||||
} else {
|
||||
ast_debug(2, "Found promiscuous redirection to 'SIP/::::%s@%s'\n", get_transport(transport), s);
|
||||
if (p->owner)
|
||||
ast_string_field_build(p->owner, call_forward, "SIP/::::%s@%s", get_transport(transport), s);
|
||||
}
|
||||
} else {
|
||||
e = strchr(tmp, '@');
|
||||
if (e) {
|
||||
|
||||
Reference in New Issue
Block a user