Mercurial > hg > nginx
changeset 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 | 81f4bf441eb0 |
children | a60b3fcf25ec |
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 Thu Nov 27 14:24:39 2008 +0000 +++ b/src/event/ngx_event_connect.c Thu Nov 27 14:28:19 2008 +0000 @@ -139,11 +139,22 @@ 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