On Tue, 08 Mar 2011 10:53:43 -0700, Alex Rousskov wrote:
HTTP Compliance: Do not forward adapted TRACE with Max-Forwards: 0.

Before the change, Max-Forwards request header value was cached using
the HttpRequest::max_forwards member. The cache was initialized once in clientProcessRequest() function. That worked fine as long as no request
adaptation was performed. Adaptation could replace the original HTTP
request with the adapted one, losing the max_forwards value.

This change removes the HttpRequest::max_forwards member and gets the
header value directly from the HttpHeader object as needed. This means we may do a few more string-to-integer conversions for TRACE and OPTIONS requests, but the overhead is negligible and is probably a tiny net win
for the common case.

The no-cache approach also works better with eCAP adapters that may
modify Max-Forwards.


Removed assertion from clientReplyContext::traceReply() since the method is called from a single place and the condition is checked right before
the call.

Co-Advisors test cases:
    test_case/rfc2616/maxForwardsZero-TRACE-asterisk
    test_case/rfc2616/maxForwardsZero-TRACE-absolute


Alex.


Abort.  This is already in trunk, 3.2, 3.1 since Nov 2010.
http://master.squid-cache.org/Versions/v3/3.HEAD/changesets/squid-3-11046.patch

Amos

Reply via email to