Merged revisions 54787 via svnmerge from
authorOlle Johansson <oej@edvina.net>
Fri, 16 Feb 2007 12:14:53 +0000 (12:14 +0000)
committerOlle Johansson <oej@edvina.net>
Fri, 16 Feb 2007 12:14:53 +0000 (12:14 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r54787 | oej | 2007-02-16 13:06:23 +0100 (Fri, 16 Feb 2007) | 2 lines

Issue #7541 - Handle multipart attachments to SIP messages - even if boundary is quoted.

........

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

channels/chan_sip.c

index ef36791..20a14f0 100644 (file)
@@ -4870,6 +4870,7 @@ static int find_sdp(struct sip_request *req)
        const char *search;
        char *boundary;
        unsigned int x;
+       int boundaryisquoted = FALSE;
 
        content_type = get_header(req, "Content-Type");
 
@@ -4889,15 +4890,24 @@ static int find_sdp(struct sip_request *req)
                return 0;
 
        search += 10;
-
        if (ast_strlen_zero(search))
                return 0;
 
+       /* If the boundary is quoted with ", remove quote */
+       if (*search == '\"')  {
+               search++;
+               boundaryisquoted = TRUE;
+       }
+
        /* make a duplicate of the string, with two extra characters
           at the beginning */
        boundary = ast_strdupa(search - 2);
        boundary[0] = boundary[1] = '-';
 
+       /* Remove final quote */
+       if (boundaryisquoted)
+               boundary[strlen(boundary) - 1] = '\0';
+
        /* search for the boundary marker, but stop when there are not enough
           lines left for it, the Content-Type header and at least one line of
           body */