diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2008-11-27 14:28:19 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2008-11-27 14:28:19 +0000 |
| commit | 0c937d251f16455264216a90a03c4acd6458c136 (patch) | |
| tree | 19f8aca5d31cba39523e483769d2a87c05e4dedf /src | |
| parent | 6671983d86a49410f0503c753c4e20d78f4296fc (diff) | |
| download | nginx-0c937d251f16455264216a90a03c4acd6458c136.tar.gz nginx-0c937d251f16455264216a90a03c4acd6458c136.tar.bz2 | |
r2118 merge:
handle connect()'s EAGAIN on Linux
Diffstat (limited to 'src')
| -rw-r--r-- | src/event/ngx_event_connect.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c index 5ae7b23bf..b5e1a870e 100644 --- a/src/event/ngx_event_connect.c +++ b/src/event/ngx_event_connect.c @@ -139,11 +139,22 @@ ngx_event_connect_peer(ngx_peer_connection_t *pc) if (rc == -1) { err = ngx_socket_errno; - /* Winsock returns WSAEWOULDBLOCK (NGX_EAGAIN) */ - - if (err != NGX_EINPROGRESS && err != NGX_EAGAIN) { + if (err != NGX_EINPROGRESS +#if (NGX_WIN32) + /* Winsock returns WSAEWOULDBLOCK (NGX_EAGAIN) */ + && err != NGX_EAGAIN +#endif + ) + { if (err == NGX_ECONNREFUSED +#if (NGX_LINUX) + /* + * Linux returns EAGAIN instead of ECONNREFUSED + * for unix sockets if listen queue is full + */ + || err == NGX_EAGAIN +#endif || err == NGX_ENETDOWN || err == NGX_ENETUNREACH || err == NGX_EHOSTDOWN |
