Squid w/ ICAP 204s

From: Lisa Fowler <lisa.fowler_at_gmail.com>
Date: Thu, 4 Dec 2008 14:31:34 -0800

Posting here as well... This might be a better place than squid-users
since it's potentially a bug...

---------- Forwarded message ----------

Hello-

I've searched through the archives and can't find anything pertaining
to this problem, so I hope that someone can help with this.

I have a Squid 3.0 installation (a build from November) with the ICAP
client running, intercepting responses precache, which then forwards
the entire responses to the ICAP server. I have a simple Python ICAP
server that does nothing but respond to OPTIONS and sends back 204s
otherwise. Preview is not enabled.

For *most* webpages, this works fine (e.g. http://www.google.com
http://www.mozilla.org), and the webpage is forwarded and all content
is rendered properly on the web client.

For certain webpages (e.g. http://www.mozillazine.org), the ICAP
server receives the content, responds with the 204 as usual, but then
the client never receives webpage and thus renders a blank page.

Looking under the hood, Squid deterministically fails in
ICAPModXact::virginContentSize() at the Must(virginConsumed <= start
&& start <= end) line.

I'm deep in the murky waters of debugging, and it seems that there's a
quirk in whether or not virginConsumed is reset to 0, such that I get
a failure on the above Must assertion, for example (36033 <= 0 && 0 <=
36033) . I wonder if it's related to how
virgin.body_pipe->buf().contentSize() is handled in the case of
virginBodySending, such that in ICAPModXact::echoMore(), sizeMax is 0,
and thus virginBodySending.progress(size) is never called... In the
cases that *do* work, virginBodySending.progress(size) is called, but
not in the cases that fail. The cases that fail have contentSize
zeroed out (because virginBodySending.progress(size) is not called)...

Any ideas/experience/advice?

Thanks,
Lisa
Received on Thu Dec 04 2008 - 22:32:53 MST

This archive was generated by hypermail 2.2.0 : Fri Dec 05 2008 - 12:00:04 MST