diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2010-11-25 10:15:04 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2010-11-25 10:15:04 +0000 |
| commit | 40747ad861d1645febf4c3a43f5f0c3489decbf0 (patch) | |
| tree | 29bb394a5d424e27c93295cdbc02c9bd339f675d | |
| parent | 601ca7cd6e8ba5fce8e87cfd122591a46b1136ff (diff) | |
| download | nginx-40747ad861d1645febf4c3a43f5f0c3489decbf0.tar.gz nginx-40747ad861d1645febf4c3a43f5f0c3489decbf0.tar.bz2 | |
Linux accept4() support
| -rw-r--r-- | auto/os/features | 9 | ||||
| -rw-r--r-- | src/event/ngx_event_accept.c | 4 | ||||
| -rw-r--r-- | src/os/unix/ngx_posix_init.c | 2 |
3 files changed, 14 insertions, 1 deletions
diff --git a/auto/os/features b/auto/os/features index ecd8e7fb4..c0fd6dd9e 100644 --- a/auto/os/features +++ b/auto/os/features @@ -305,6 +305,15 @@ ngx_feature_test="setsockopt(0, SOL_SOCKET, SO_SETFIB, NULL, 4)" . auto/feature +ngx_feature="accept4()" +ngx_feature_name="NGX_HAVE_ACCEPT4" +ngx_feature_run=no +ngx_feature_incs="#include <sys/socket.h>" +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="accept4(0, NULL, NULL, SOCK_NONBLOCK)" +. auto/feature + if [ $NGX_FILE_AIO = YES ]; then ngx_feature="kqueue AIO support" diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c index ed5762e18..67751faf7 100644 --- a/src/event/ngx_event_accept.c +++ b/src/event/ngx_event_accept.c @@ -46,7 +46,11 @@ ngx_event_accept(ngx_event_t *ev) do { socklen = NGX_SOCKADDRLEN; +#if (NGX_HAVE_ACCEPT4) + s = accept4(lc->fd, (struct sockaddr *) sa, &socklen, SOCK_NONBLOCK); +#else s = accept(lc->fd, (struct sockaddr *) sa, &socklen); +#endif if (s == -1) { err = ngx_socket_errno; diff --git a/src/os/unix/ngx_posix_init.c b/src/os/unix/ngx_posix_init.c index f21614499..2357ab31f 100644 --- a/src/os/unix/ngx_posix_init.c +++ b/src/os/unix/ngx_posix_init.c @@ -60,7 +60,7 @@ ngx_os_init(ngx_log_t *log) ngx_max_sockets = (ngx_int_t) rlmt.rlim_cur; -#if (NGX_HAVE_INHERITED_NONBLOCK) +#if (NGX_HAVE_INHERITED_NONBLOCK || NGX_HAVE_ACCEPT4) ngx_inherited_nonblocking = 1; #else ngx_inherited_nonblocking = 0; |
