Squid3 with multiple ICAP Services

From: Richard Bishop <squid-dev@dont-contact.us>
Date: Wed, 19 Sep 2007 17:02:16 -0400

Hi guys,

Having read over the list archives, I see that multiple ICAP services is currently not supported. As with a couple of others on the squid-users list, I've a requirement for chaining services - hence a request is passed through two (or more) AV scanners before being cached and passed onto the client browser.

Given that (as per Alex's comments) it doesn't look like this is a priority for the dev team, I'm willing to have a go at coming up with a patch to support this functionality. Having spent a couple of hours looking over the squid3 code, I think I've got my head around how it all works. Can somebody indicate whether I'm on the right lines here:

As far as I can see, all ICAP transactions themselves (once we have indentified a suitable service from the candidates in squid.conf) are fired as asynchronous events. Events are then fired in the order they are pushed onto the events list, with a callback being executed at the respective time.

So, as I understand it, adding multiple ICAP services is simply a matter of adding several events onto the events list one after another, each having a respective argument for the desired service. These will then be processed in order, each adapting the request / response (or leaving it untouched).

Obviously there's some rejigging of the config side of things to do. The findBestService code that currently returns a single ('Best') service item would need to return a list of matching services, as far as a I see, each of which would have its own event, which then runs the callback functions which then perform the necessary ICAP transactions. Once all of the ICAP services have had their chance to meddle with the data, it is then returned to the core to continue to its final destination.

Have I understood this all correctly or is there some massive amount of work involved that I've missed?

I've also found a post on the list archives, from Alex, commenting on multiple ICAP services with regards to load balancing and chaining. The post is dated Oct. 2006. Are these points still valid? Is it something else to bear in mind here? The post in question is here: http://marc.info/?l=squid-dev&m=116181976000760&w=2

Thanks

Richard

P.S. You're obviously making very good progress with bug-fixes in Squid3. The CVS version I have (PRE7-20070918) is a lot more stable than a version I was experimenting with a couple of months back. Any ideas when Squid3 might be considered stable?
Received on Thu Sep 20 2007 - 15:13:19 MDT

This archive was generated by hypermail pre-2.1.9 : Mon Oct 01 2007 - 12:00:05 MDT