--- src/client_side.cc 2010-08-12 17:39:42.000000000 +1000 +++ src/client_side.cc 2010-08-12 17:39:08.000000000 +1000 @@ -911,6 +911,8 @@ debugs(33, 5, "ClientSocketContext::sendBodyChunked: marking request as complete because zero length chunk sent"); repContext->flags.complete = 1; } + // stop sending chunked responses. + http->request->flags.chunked_reply = 0; } AsyncCall::Pointer call = commCbCall(33, 5, "clientWriteBodyComplete", @@ -1751,6 +1753,12 @@ break; case STREAM_COMPLETE: + if (http->request->flags.chunked_reply) { + debugs(33, 5, "clientWriteComplete: FD " << aFileDescriptor << " was chunked. Sending last chunk."); + StoreIOBuffer emptyBuffer; + sendBodyChunked(emptyBuffer); + return; + } debugs(33, 5, "clientWriteComplete: FD " << aFileDescriptor << " Keeping Alive"); keepaliveNextRequest(); return;