Mercurial > hg > nginx
comparison src/event/ngx_event_connect.c @ 2350:ee07289b697a stable-0.6
r2118 merge:
handle connect()'s EAGAIN on Linux
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 27 Nov 2008 14:28:19 +0000 |
parents | 192443881e51 |
children | 042dcbaead66 |
comparison
equal
deleted
inserted
replaced
2349:81f4bf441eb0 | 2350:ee07289b697a |
---|---|
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 { |