Hi squid developers,

I want to report 1-2 small bugs and corrections at squid
icap client interface that are relative with keeped alive
requests to an icap server.
I am using  a (corrected) squid-icap named squid-2.5.STABLE5-icap-6-pre1.
but as I seen this bugs exists and in  squid-icap-2.5-200405131634
icap enabled squid.


1)when icapReadReply3 called after a response request with null-body
(e.g when the content of a web page not changed ...)
then enters the block "if (EBIT_TEST(i..., ENTRY_ABORTED)){".
Squid icap-client has request keeped alive connection and
now the connection not closed. This behaviour can cause a lot of open connection to an icap server until connections expired.


An addition of  comm_close(fd) in this block can solve the problem.

Moreover if think there is no need for the connection to be closed
in this phase and can keeped alive. So the entire  block :
   if (EBIT_TEST(i..., ENTRY_ABORTED)){
        ...........
   }
in function icapReadReply3 can removed.


2) In file icap_reqmod.c in function icapSendReqMod
when compute the position of entities for
"Encapsulated:" header squid does not include crlf (2 bytes) in possition computation.
This fields are the possition in the header not the size of the header.


I propose to
a) add a "crlf" at the end of "icap->request->header"
before Encapsulated header computation
eg "memBufAppend(&mb_hdr, crlf, 2);" at line 613
and
b) remove the "memBufAppend(&mb, crlf, 2);" line 637 that adds the crlf at the end of
entire buffer.



Regards, Christos

Reply via email to