~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to lib/common/interpret.py

  • Committer: dcoles
  • Date: 2008-05-09 07:43:37 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:753
Upload: Patch submitted by 'wagrant' to fix file upload of dos formated files 
and prevent corruption of upload files.

wagrant wrote:
> Last night I set up IVLE in my Gutsy schroot, and debugged it further.
> Looking deeper at the code, I noted it was a different error from the one I
> thought it was (an incorrect header, rather than lack of a Content-Type).
> This made the cause and fix obvious.
>
> http://qeuni.net/ivle_bug_1942845.diff fixes it for me in all the
> situations I can think of. It checks for the length of the header section
> obtained by splitting on a double LF then double CRLF, and takes the
> smaller one as the headers. In the old code, any output with a double CRLF
> in the body would have anything before the first CRLF treated as headers,
> which is wrong. Double LFs weren't affected because LFs are used by default
> to terminate the real headers.
>
> I apparently can't attach things (argh! I hate the SourceForge bug
> tracker).


Show diffs side-by-side

added added

removed removed

Lines of Context:
197
197
        # Break data into lines of CGI header data. 
198
198
        linebuf = cgiflags.linebuf + data
199
199
        # First see if we can split all header data
200
 
        split = linebuf.split('\r\n\r\n', 1)
201
 
        if len(split) == 1:
202
 
            # Allow UNIX newlines instead
203
 
            split = linebuf.split('\n\n', 1)
 
200
        # We need to get the double CRLF- or LF-terminated headers, whichever
 
201
        # is smaller, as either sequence may appear somewhere in the body.
 
202
        usplit = linebuf.split('\n\n', 1)
 
203
        wsplit = linebuf.split('\r\n\r\n', 1)
 
204
        split = len(usplit[0]) > len(wsplit[0]) and wsplit or usplit
204
205
        if len(split) == 1:
205
206
            # Haven't seen all headers yet. Buffer and come back later.
206
207
            cgiflags.linebuf = linebuf