*bump*

If there are no objections I will merge this to trunk.

Amos

On 6/01/2014 4:21 p.m., Amos Jeffries wrote:
> Updated patch attached. It mostly follows the plan you laid out (I was
> partially through an almost identical plan already, I merged the two
> from where I was up to).
> 
> We now have a two-class HTTP Parser hierarchy:
> * base class Http1::Parser
>   - which contains the generic (but HTTP/1.x specific) parse members and
> accessors
> 
> * child class Http1::RequestParser
>   - which contains the reuqest-specific state members and parse logics
> necessary to extend Http1::Parser into a HTTP Request message parser.
> 
> The parser still only parses the request-line and greps the mime headers
> as a single token/blob into an SBuf for later old-parser stages to work
> with.
> 
> 
> 
> On 4/01/2014 5:38 a.m., Alex Rousskov wrote:
>>
>>>      /* NP: don't be tempted to move this down or remove again.
>>>       * It's the only DDoS protection old-String has against long URL */
>>>      if ( hp->bufsiz <= 0) {
>>>          debugs(33, 5, "Incomplete request, waiting for end of request 
>>> line");
>>>          return NULL;
>>>      } else if ( (size_t)hp->bufsiz >= Config.maxRequestHeaderSize && 
>>> headersEnd(hp->buf, Config.maxRequestHeaderSize) == 0) {
>>>          debugs(33, 5, "parseHttpRequest: Too large request");
>>>          hp->request_parse_status = Http::scHeaderTooLarge;
>>>          return parseHttpRequestAbort(csd, "error:request-too-large");
>>>      }
>>
>> BTW, the above should be moved into the RequestParser code, with an
>> adjusted comment, and headersEnd() call moved/merged into the overall
>> parsing logic.
> 
> I have done this in the patch as well while making the garbage prefix
> whitespace incrementally parse+discard.
> 
> Although I am not yet 100% certain that I got all the places in the code
> shuffling the I/O buffer based on ClientHttpRequest::req_sz (which now
> omits any prefix garbage bytes and has already been consumed). Testing
> for the last day in regular traffic seems to show things fully working.
> 
> Amos
> 

Reply via email to