From 366d00328c50bfc0986e3529af26a065719b56cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BChler?= Date: Mon, 27 Dec 2010 16:21:13 +0100 Subject: [PATCH] Fix bug in delayed connection handling, 2nd try --- src/common/memcached.c | 3 ++- src/modules/mod_fastcgi.c | 3 ++- src/modules/mod_proxy.c | 3 ++- src/modules/mod_scgi.c | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/common/memcached.c b/src/common/memcached.c index 97d74e2..ce8bcee 100644 --- a/src/common/memcached.c +++ b/src/common/memcached.c @@ -295,10 +295,11 @@ static void memcached_connect(liMemcachedCon *con) { case EINPROGRESS: case EALREADY: case EINTR: - case EISCONN: memcached_start_io(con); li_ev_io_add_events(con->loop, &con->con_watcher, EV_READ | EV_WRITE); break; + case EISCONN: + break; default: g_clear_error(&con->err); g_set_error(&con->err, LI_MEMCACHED_ERROR, LI_MEMCACHED_CONNECTION, "Couldn't connect to '%s': %s", diff --git a/src/modules/mod_fastcgi.c b/src/modules/mod_fastcgi.c index bf1b90a..ed0c5b7 100644 --- a/src/modules/mod_fastcgi.c +++ b/src/modules/mod_fastcgi.c @@ -683,13 +683,14 @@ static liHandlerResult fastcgi_statemachine(liVRequest *vr, fastcgi_connection * case EINPROGRESS: case EALREADY: case EINTR: - case EISCONN: fcon->state = FS_CONNECTING; return LI_HANDLER_GO_ON; case EAGAIN: /* backend overloaded */ fastcgi_close(vr, p); li_vrequest_backend_overloaded(vr); return LI_HANDLER_GO_ON; + case EISCONN: + break; default: if (errno != g_atomic_int_get(&fcon->ctx->last_errno)) { g_atomic_int_set(&fcon->ctx->last_errno, errno); diff --git a/src/modules/mod_proxy.c b/src/modules/mod_proxy.c index bd8a56d..8446d3b 100644 --- a/src/modules/mod_proxy.c +++ b/src/modules/mod_proxy.c @@ -330,13 +330,14 @@ static liHandlerResult proxy_statemachine(liVRequest *vr, proxy_connection *pcon case EINPROGRESS: case EALREADY: case EINTR: - case EISCONN: pcon->state = SS_CONNECTING; return LI_HANDLER_GO_ON; case EAGAIN: /* backend overloaded */ proxy_close(vr, p); li_vrequest_backend_overloaded(vr); return LI_HANDLER_GO_ON; + case EISCONN: + break; default: VR_ERROR(vr, "Couldn't connect to '%s': %s", li_sockaddr_to_string(pcon->ctx->socket, vr->wrk->tmp_str, TRUE)->str, diff --git a/src/modules/mod_scgi.c b/src/modules/mod_scgi.c index a20a36b..667a3f1 100644 --- a/src/modules/mod_scgi.c +++ b/src/modules/mod_scgi.c @@ -436,13 +436,14 @@ static liHandlerResult scgi_statemachine(liVRequest *vr, scgi_connection *scon) case EINPROGRESS: case EALREADY: case EINTR: - case EISCONN: scon->state = SS_CONNECTING; return LI_HANDLER_GO_ON; case EAGAIN: /* backend overloaded */ scgi_close(vr, p); li_vrequest_backend_overloaded(vr); return LI_HANDLER_GO_ON; + case EISCONN: + break; default: VR_ERROR(vr, "Couldn't connect to '%s': %s", li_sockaddr_to_string(scon->ctx->socket, vr->wrk->tmp_str, TRUE)->str,