We should handle PUT and OPTIONS requests.  We should handle Expect
headers and 100 (Continue) responses.

We should handle TRACE requests and the Max-Forwards field.  However,
TRACE requests never even make it to the handler.

We should use the proposed DRP and WEBDAV mechanisms to get
information about mirrors, rather than having to input all this
information manually.

Via field uses a pseudonym (apache) to suppress the hostname for
security but exposes the server version in a comment.  Should allow
customization or at least suppression of the comment.  Should allow
choice of whether or not to suppress the hostname.  Should use same
or similar directive name as the Apache Proxy module, whenever it
gets around to implementing this requirement.

The UserAgent and cached configuration information are created and
stored per-process.  Would it be better to have just one copy for all
processes?  In particular, the index of the next site for round-robin
multiplexing is stored with the configuration information and would be
better as a global.

Try using Apache::URI instead of URI::URL.

Consider allowing passing of requests to Apache's proxy mechanism.
Automatic failover in this case would be quite difficult and is
probably not worthwhile.  However, many people would like a faster
more lightweight method for distributing requests amongst their own
servers which, presumably, never fail. :-)

Remember which servers have errored.  Move these servers to the end of
the priority queue until after some user specified timeout.  This will
allow known bad servers to be tried only after any other servers have
been tried.