]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
URI encode the user part of the contact header.
authorMatthew Nicholson <mnicholson@digium.com>
Tue, 18 Jan 2011 21:35:03 +0000 (21:35 +0000)
committerMatthew Nicholson <mnicholson@digium.com>
Tue, 18 Jan 2011 21:35:03 +0000 (21:35 +0000)
ABE-2705

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@302311 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 4ec0a5176558526064ef9e9654437a169d78020f..374af61740719a36613be9a021373334cc3d7c53 100644 (file)
@@ -7521,11 +7521,16 @@ 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;
+
+       user = ast_uri_encode(p->exten, tmp, sizeof(tmp), 1);
+
        /* Construct Contact: header */
        if (ourport != STANDARD_SIP_PORT)
-               ast_string_field_build(p, our_contact, "<sip:%s%s%s:%d>", p->exten, ast_strlen_zero(p->exten) ? "" : "@", ast_inet_ntoa(p->ourip), ourport);
+               ast_string_field_build(p, our_contact, "<sip:%s%s%s:%d>", user, ast_strlen_zero(user) ? "" : "@", ast_inet_ntoa(p->ourip), ourport);
        else
-               ast_string_field_build(p, our_contact, "<sip:%s%s%s>", p->exten, ast_strlen_zero(p->exten) ? "" : "@", ast_inet_ntoa(p->ourip));
+               ast_string_field_build(p, our_contact, "<sip:%s%s%s>", user, ast_strlen_zero(user) ? "" : "@", ast_inet_ntoa(p->ourip));
 }
 
 /*! \brief Build the Remote Party-ID & From using callingpres options */