On 10/09/2008 10:11 PM, Matt Stevenson wrote:
> Had a bit more time, here is a patch that should work for Unix which have
> "apr_wait_for_io_or_timeout" available. I can't test windows/others so that's
> the reason for the ifdef.
>
> ProxyPass / balance://hotcluster/
> <Proxy balance://hotcluster>
> # defaultish tomcat
> BalancerMember ajp://10.136.130.111:7009 loadfactor=1 connectiontimeout=2
> # below IP is not reachable, acts like a down box
> BalancerMember ajp://192.168.0.7:7010 loadfactor=1 connectiontimeout=2
> </Proxy>
>
>
> Index: modules/proxy/proxy_util.c
> ===================================================================
> --- modules/proxy/proxy_util.c (revision 703219)
> +++ modules/proxy/proxy_util.c (working copy)
> @@ -2358,9 +2358,18 @@
> "proxy: %s: fam %d socket created to connect to %s",
> proxy_function, backend_addr->family, worker->hostname);
>
> + /* use non blocking for connect timeouts to work. The ifdef
> + limits to unix systems which have apr_wait_for_io_or_timeout.
> + TODO: remove the ifdef and see what works/breaks */
> +#ifdef USE_WAIT_FOR_IO
> + apr_socket_opt_set(newsock, APR_SO_NONBLOCK, 1);
> +#endif
> /* make the connection out of the socket */
> rv = apr_socket_connect(newsock, backend_addr);
>
> +#ifdef USE_WAIT_FOR_IO
> + apr_socket_opt_set(newsock, APR_SO_NONBLOCK, 0);
> +#endif
> /* if an error occurred, loop round and try again */
> if (rv != APR_SUCCESS) {
> apr_socket_close(newsock);
>
According to the APR source files only older versions of BeOS do not provide
apr_wait_for_io_or_timeout.
So I would say that it is pretty much save to remove the ifdef's
Regards
RĂ¼diger