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