[squid-dev] [PATCH] Parser-NG conversion of ICAP pt2
Amos Jeffries
squid3 at treenet.co.nz
Mon Sep 21 22:01:29 UTC 2015
On 22/09/2015 3:50 a.m., Alex Rousskov wrote:
> On 09/21/2015 08:46 AM, Amos Jeffries wrote:
>> On 24/08/2015 8:40 a.m., Amos Jeffries wrote:
>>> It turns out that ICAP implements has three distinct protocol parsers.
>>>
>>> I begin the ICAP parser conversion to the Parser-NG model with
>>> ModXact::parseHeaders() - which was conflating both ICAP and HTTP, and
>>> the HTTP directional parsers.
>>>
>>>
>>> * splits the exiting parse method into 3 distinct stages; ICAP-reply,
>>> HTTP-request, HTTP-reply. Each stage is sequential and controlled by the
>>> Encapsulated header contents.
>>>
>>> I'm not sure yet if we need to be tolerant of out-of-order segments in
>>> the payload. The spec is pretty clear that order is explicit and
>>> specific. But the old parser actually ignored the Encapsulated header
>>> byte offsets (!!).
>>
>> FTR: that is <http://bugs.squid-cache.org/show_bug.cgi?id=2480>
>
>
> We should continue to ignore offsets [by default] IMO. Not doing so is
> likely to result in many needless interoperability problems. There are
> many poorly written ICAP services out there.
>
> Skipping bogus parts (bug 2480) is fine as a minor interoperability
> improvement if it is easy to do so. We do not need to parse offsets to
> skip a part.
>
> I would not add support for out-of-order parts unless it does not
> complicate the code at all and is explicitly requested.
Okay. Then the patch should be suitable for commit as-is AFAIK. I await
your audit, and/or any testing that can be thrown at it from Factory's
end :-)
Amos
More information about the squid-dev
mailing list