Mercurial > hg > nginx
changeset 2117:9d62abd76ea5
handle connect()'s EAGAIN on Linux
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 09 Jul 2008 15:42:13 +0000 |
parents | 46b6afd789b0 |
children | c1f589732d8c |
files | src/event/ngx_event_connect.c |
diffstat | 1 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/ngx_event_connect.c +++ b/src/event/ngx_event_connect.c @@ -139,11 +139,22 @@ ngx_event_connect_peer(ngx_peer_connecti 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