2
0
Fork 0

Fix bug in delayed connection handling, 2nd try

personal/stbuehler/wip
Stefan Bühler 2010-12-27 16:21:13 +01:00
parent 318b7bf041
commit 366d00328c
4 changed files with 8 additions and 4 deletions

View File

@ -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",

View File

@ -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);

View File

@ -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,

View File

@ -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,