2.6stable5 icap client - reqmod problems with webwasher 5.x and 6

From: Westerhold, Axel <Axel.Westerhold@dont-contact.us>
Date: Fri, 17 Nov 2006 17:11:27 +0100

Hi all,

I ran into a problem wih the squid 2.6StableX and the Icap patch I haven't
seen with > 2.5Stable9.

Actually Webwasher will send the blocking notification in reqmod (for
instance using the URL filter) as a HTTP REPLY.

In 2.6 this Reply never reached the calling client. Instead an empty page
was shown.

While running through the source I noticed that clientWriteComplete closed
down the FD because the reported size was 0.

This is because Webwasher never reports the used HTTP Version. In 2.5 this
didn't matter because >1 was assumed and mb = httpReplyPack(rep); was used
in clientSendMoreData (client_side.c).

In 2.6 due to the modifications this happens in clientCheckHeaderDone
(client_side.c) but looks like this

 if (http->http_ver.major >= 1)
        mb = httpReplyPack(rep);
    else
        memBufDefInit(&mb);

As said before, Webwasher does not supply the HTTP Header within the icap
reqmod reply so httpReplyPack is not used and an empty page will be send
back.

My solution currently modifies icapReqModHandoffRespMod (icap_reqmod.c) as
follows.

     if (NULL == http)
        return;
     assert(icap->request);
+ http->http_ver.major = 1;
     http->entry = clientCreateStoreEntry(http,
        icap->request->method, icap->request->flags);
     icap->respmod.entry = http->entry;

For my uses this works fine but mabye someone else comes up with a better
solution.

Regards,

Axel

Received on Fri Nov 17 2006 - 14:39:25 MST

This archive was generated by hypermail pre-2.1.9 : Wed Nov 29 2006 - 12:00:05 MST