mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-20 03:26:55 +00:00
Prevent double uri_escaping in chan_sip when pedantic is enabled
If pedantic mode is enabled, outbound invites will have double-escaped contacts. This avoids setting an already-escaped string into a field where it is expected to be unescaped. (closes issue ASTERISK-20023) Reported by: Walter Doekes ........ Merged revisions 369993 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 369994 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@369995 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -12855,11 +12855,11 @@ static void initreqprep(struct sip_request *req, struct sip_pvt *p, int sipmetho
|
||||
else /* Save for any further attempts */
|
||||
ast_string_field_set(p, fromname, n);
|
||||
|
||||
ast_copy_string(tmp_l, l, sizeof(tmp_l));
|
||||
if (sip_cfg.pedanticsipchecking) {
|
||||
ast_escape_quoted(n, tmp_n, sizeof(tmp_n));
|
||||
n = tmp_n;
|
||||
ast_uri_encode(l, tmp_l, sizeof(tmp_l), ast_uri_sip_user);
|
||||
l = tmp_l;
|
||||
}
|
||||
|
||||
ourport = (p->fromdomainport) ? p->fromdomainport : ast_sockaddr_port(&p->ourip);
|
||||
@@ -12873,10 +12873,10 @@ static void initreqprep(struct sip_request *req, struct sip_pvt *p, int sipmetho
|
||||
|
||||
if (!sip_standard_port(p->socket.type, ourport)) {
|
||||
size_t offset = strlen(from);
|
||||
snprintf(&from[offset], sizeof(from) - offset, "<sip:%s@%s:%d>;tag=%s", l, d, ourport, p->tag);
|
||||
snprintf(&from[offset], sizeof(from) - offset, "<sip:%s@%s:%d>;tag=%s", tmp_l, d, ourport, p->tag);
|
||||
} else {
|
||||
size_t offset = strlen(from);
|
||||
snprintf(&from[offset], sizeof(from) - offset, "<sip:%s@%s>;tag=%s", l, d, p->tag);
|
||||
snprintf(&from[offset], sizeof(from) - offset, "<sip:%s@%s>;tag=%s", tmp_l, d, p->tag);
|
||||
}
|
||||
|
||||
if (!ast_strlen_zero(explicit_uri)) {
|
||||
|
Reference in New Issue
Block a user