From: Matthew Nicholson Date: Tue, 18 Jan 2011 21:43:21 +0000 (+0000) Subject: Merged revisions 302313 via svnmerge from X-Git-Tag: 1.8.4-rc1~114 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=34bda441749f57e057d4e63998541489385a9d3a;p=thirdparty%2Fasterisk.git Merged revisions 302313 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r302313 | mnicholson | 2011-01-18 15:40:03 -0600 (Tue, 18 Jan 2011) | 11 lines Merged revisions 302311 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r302311 | mnicholson | 2011-01-18 15:35:03 -0600 (Tue, 18 Jan 2011) | 4 lines URI encode the user part of the contact header. ABE-2705 ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@302314 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 058e602b90..d29fc32d3b 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -11065,12 +11065,15 @@ static void extract_uri(struct sip_pvt *p, struct sip_request *req) /*! \brief Build contact header - the contact header we send out */ static void build_contact(struct sip_pvt *p) { + char tmp[SIPBUFSIZE]; + char *user = ast_uri_encode(p->exten, tmp, sizeof(tmp), 1); + if (p->socket.type == SIP_TRANSPORT_UDP) { - ast_string_field_build(p, our_contact, "", p->exten, - ast_strlen_zero(p->exten) ? "" : "@", ast_sockaddr_stringify(&p->ourip)); + ast_string_field_build(p, our_contact, "", user, + ast_strlen_zero(user) ? "" : "@", ast_sockaddr_stringify(&p->ourip)); } else { - ast_string_field_build(p, our_contact, "", p->exten, - ast_strlen_zero(p->exten) ? "" : "@", ast_sockaddr_stringify(&p->ourip), + ast_string_field_build(p, our_contact, "", user, + ast_strlen_zero(user) ? "" : "@", ast_sockaddr_stringify(&p->ourip), get_transport(p->socket.type)); } }