On Friday, April 13, 2001, at 05:21 PM, Graham Leggett wrote:
Chuck Murcko wrote:
Right now the multiplexer (the protocol selector) in mod_proxy.c is
hardwired, so you have to touch it everytime you add a new protocol.
This particular filter should read config to know what protocols it has
(or something else I forget that Victor, Ian, and I talked about last
week) and be able to build the protocol processing filter chain (they
won't always consist of only a content generator, consider SSL
decrypt->HTTP proxy).
We have this already :)
Almost all of it, in fact.
...
Hmmm - I think I get what you're after. Right now there is a big select
framework in mod_proxy.c that selects between http, ftp and connect (and
then LDAP and SQL). This is hardwired. Can this be constructed so that a
scheme handler could be installed, that would be called based on scheme?
These scheme handlers wouldn't be filters, but hooks that will be
installed if present, ignored if not. A module would link a hook with a
handler and a scheme. This should be really easy to do - just gotta
figure out how the hook APIs work :)
Let me start playing...
Hooks was what I was trying to remember.
Well, Theo (mod_backhand) might disagree with you there. So would I, as
building up and tearing down the connections can be a substantial
impact
when the messages are short (like HTTP requests) and the net load is
high. Mod_backhand does a bit of work to insure machine load stays
balanced.
Hmmmm - ok then the connection pool will have to be part of the load
balancer. There are placeholders in the code for where a load balancer
should go.
I am still really keen on keeping then core proxy module as simple as
possible, putting enhancements into external filters or hooks. One of
the main problems with the v1.3 proxy was that feature creep had
cluttered the code until it stopped working reliably.
Let's pursue this later on. A cache is better sooner. 8^)
Another case I can think of is cache synching amongst a cluster of
caches, it could be useful to pool those connections.
Is there not a special protocol for this? Squid supports cache syncing,
yet another bunch of three letter acronym protocols...! :)
There are n protocols for doing this (anyone for Akamai? 8^). The idea
would be to let them share a generic pool of connections, and let the
developer with an "itch to scratch" concentrate on the protocol filter.
Chuck Murcko
Topsail Group
http://www.topsail.org/