returns EINPROGRESS and a subsequent poll() returns only POLLERR.
Observed on HP-UX.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@759832
13f79535-47bb-0310-9956-
ffa450edef68
Changes with Apache 2.3.3
+ *) ab: Fix a 100% CPU loop on platforms where a failed non-blocking connect
+ returns EINPROGRESS and a subsequent poll() returns only POLLERR.
+ Observed on HP-UX. [Eric Covener]
+
*) Remove broken support for BeOS, OS/2, TPF, and even older platforms such
as A/UX, Next, and Tandem. [Jeff Trawick]
if ((rv & APR_POLLERR) || (rv & APR_POLLNVAL)) {
bad++;
err_except++;
- start_connect(c);
+ /* avoid apr_poll/EINPROGRESS loop on HP-UX, let recv discover ECONNREFUSED */
+ if (c->state == STATE_CONNECTING) {
+ read_connection(c);
+ }
+ else {
+ start_connect(c);
+ }
continue;
}
if (rv & APR_POLLOUT) {