Re: Squid-ICAP problem (bug?)

From: Tsantilas Christos <chtsanti@dont-contact.us>
Date: Thu, 23 Nov 2006 21:04:40 +0200

Hi Christophe,
 If you are still looking for the solution, try the following patch in
icap_reqmod.c file. With this patch the icapReqModPassHttpBody function
called if the icap->reqmod.http_entity.buf.size is zero, and at this
phase can handle correctly, the case that the
icap->flags.reqmod_http_entity_eof==1.

@@ -877,7 +876,7 @@
            icapParseChunkedBody(icap,
            icapReqModMemBufAppend, &icap->reqmod.http_entity.buf);
     }
- if (icap->reqmod.http_entity.bytes_read >=
icap->request->content_length)
+ if (icap->chunk_size < 0 )
        icap->flags.reqmod_http_entity_eof = 1;

     if (!icap->flags.reqmod_http_entity_eof)
@@ -889,7 +888,7 @@
        icap->reqmod.http_entity.callback);
     debug(81, 3) ("%s:%d http_entity.buf.size=%d\n", __FILE__, __LINE__,
        icap->reqmod.http_entity.buf.size);
- if (icap->reqmod.http_entity.callback &&
icap->reqmod.http_entity.buf.size) {
+ if (icap->reqmod.http_entity.callback /*&&
icap->reqmod.http_entity.buf.size*/) {
        icapReqModPassHttpBody(icap,
            icap->reqmod.http_entity.callback_buf,
            icap->reqmod.http_entity.callback_bufsize,

Christophe Boyanique wrote:
>
> Hello,
>
> Thanks for you support.
>
> I tried the patch from Tsantilas:
>..................................................
> But there is a new problem.
>
> After the conditionnal call to commSetSelect there is a conditionnal
> call to icapReqModPassHttpBody and this where is the problem:
>
> if (icap->reqmod.http_entity.callback &&
> icap->reqmod.http_entity.buf.size) {

At this point try to change the if to:
 if (icap->reqmod.http_entity.callback /*&&
icap->reqmod.http_entity.buf.size*/)

to remove the icap->reqmod.http_entity.buf.size from if.

Please, if you try it, tell me if still there is any problem here.
All test I done, worked for me, but I want a second opinion before
commit it to cvs .....

> icapReqModPassHttpBody(icap,
> icap->reqmod.http_entity.callback_buf,
> icap->reqmod.http_entity.callback_bufsize,
> icap->reqmod.http_entity.callback,
> icap->reqmod.http_entity.callback_data);
> icap->reqmod.http_entity.callback = NULL;
> cbdataUnlock(icap->reqmod.http_entity.callback_data);
>
> }
>
Received on Thu Nov 23 2006 - 12:04:10 MST

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