comparison src/event/ngx_event_connect.c @ 2117:9d62abd76ea5

handle connect()'s EAGAIN on Linux
author Igor Sysoev <igor@sysoev.ru>
date Wed, 09 Jul 2008 15:42:13 +0000
parents 192443881e51
children 042dcbaead66
comparison
equal deleted inserted replaced
2116:46b6afd789b0 2117:9d62abd76ea5
137 rc = connect(s, pc->sockaddr, pc->socklen); 137 rc = connect(s, pc->sockaddr, pc->socklen);
138 138
139 if (rc == -1) { 139 if (rc == -1) {
140 err = ngx_socket_errno; 140 err = ngx_socket_errno;
141 141
142 /* Winsock returns WSAEWOULDBLOCK (NGX_EAGAIN) */ 142
143 143 if (err != NGX_EINPROGRESS
144 if (err != NGX_EINPROGRESS && err != NGX_EAGAIN) { 144 #if (NGX_WIN32)
145 145 /* Winsock returns WSAEWOULDBLOCK (NGX_EAGAIN) */
146 && err != NGX_EAGAIN
147 #endif
148 )
149 {
146 if (err == NGX_ECONNREFUSED 150 if (err == NGX_ECONNREFUSED
151 #if (NGX_LINUX)
152 /*
153 * Linux returns EAGAIN instead of ECONNREFUSED
154 * for unix sockets if listen queue is full
155 */
156 || err == NGX_EAGAIN
157 #endif
147 || err == NGX_ENETDOWN 158 || err == NGX_ENETDOWN
148 || err == NGX_ENETUNREACH 159 || err == NGX_ENETUNREACH
149 || err == NGX_EHOSTDOWN 160 || err == NGX_EHOSTDOWN
150 || err == NGX_EHOSTUNREACH) 161 || err == NGX_EHOSTUNREACH)
151 { 162 {