]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Author: Christos Tsantilas <chtsanti@users.sourceforge.net>
authorAmos Jeffries <squid3@treenet.co.nz>
Fri, 26 Dec 2008 21:47:16 +0000 (10:47 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Fri, 26 Dec 2008 21:47:16 +0000 (10:47 +1300)
Bug 2542: squid fails to resume dowload (and breaks content) when any ICAP filter is attached

In the case the icap client is enabled, the
ServerStateData::handleMoreAdaptedBodyAvailable called to handle the incoming
data from the ICAP server. Inside this function a StoreIOBuffer created to pass
the data to the related StoreEntry.

The bug is that the offset passed to the StoreIOBuffer did not count the 206
response offsets.
This patch uses the ServerStateData::currentOffset to compute the correct
offset (which also used in the case the icap client is not enabled).

src/Server.cc

index 8817d1a1e5d356446db6d17f8d0b492c2eea8b3c..476dfd81536ca9c8f4bd086edfe9a57e0b4d0239 100644 (file)
@@ -562,7 +562,8 @@ ServerStateData::handleMoreAdaptedBodyAvailable()
 
     assert(entry);
     BodyPipeCheckout bpc(*adaptedBodySource);
-    const StoreIOBuffer ioBuf(&bpc.buf, bpc.offset);
+    const StoreIOBuffer ioBuf(&bpc.buf, currentOffset);
+    currentOffset += bpc.buf.size;
     entry->write(ioBuf);
     bpc.buf.consume(contentSize);
     bpc.checkIn();