]> git.kaiwu.me - nginx.git/commitdiff
Core: handling of getsockopt(TCP_DEFER_ACCEPT) failures.
authorMaxim Dounin <mdounin@mdounin.ru>
Thu, 31 Oct 2013 00:00:37 +0000 (04:00 +0400)
committerMaxim Dounin <mdounin@mdounin.ru>
Thu, 31 Oct 2013 00:00:37 +0000 (04:00 +0400)
Recent Linux versions started to return EOPNOTSUPP to getsockopt() calls
on unix sockets, resulting in log pollution on binary upgrade.  Such errors
are silently ignored now.

src/core/ngx_connection.c
src/os/unix/ngx_errno.h
src/os/win32/ngx_errno.h

index 28bf6ba065650bca1f41f3e8423bfc0f02343824..fbcd5f719e6651600f5fa0c3bc5a8bbeb5afca78 100644 (file)
@@ -93,8 +93,10 @@ ngx_set_inherited_sockets(ngx_cycle_t *cycle)
     ngx_uint_t                 i;
     ngx_listening_t           *ls;
     socklen_t                  olen;
-#if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
+#if (NGX_HAVE_DEFERRED_ACCEPT)
     ngx_err_t                  err;
+#endif
+#if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
     struct accept_filter_arg   af;
 #endif
 #if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
@@ -248,7 +250,13 @@ ngx_set_inherited_sockets(ngx_cycle_t *cycle)
         if (getsockopt(ls[i].fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &timeout, &olen)
             == -1)
         {
-            ngx_log_error(NGX_LOG_NOTICE, cycle->log, ngx_errno,
+            err = ngx_errno;
+
+            if (err == NGX_EOPNOTSUPP) {
+                continue;
+            }
+
+            ngx_log_error(NGX_LOG_NOTICE, cycle->log, err,
                           "getsockopt(TCP_DEFER_ACCEPT) for %V failed, ignored",
                           &ls[i].addr_text);
             continue;
index 6d1a4889ad2e9e4a086f76150204ccdea53e40ee..663e460d95eda1ffa412a70d7d525209d44e703a 100644 (file)
@@ -34,6 +34,7 @@ typedef int               ngx_err_t;
 #define NGX_ENOSPC        ENOSPC
 #define NGX_EPIPE         EPIPE
 #define NGX_EINPROGRESS   EINPROGRESS
+#define NGX_EOPNOTSUPP    EOPNOTSUPP
 #define NGX_EADDRINUSE    EADDRINUSE
 #define NGX_ECONNABORTED  ECONNABORTED
 #define NGX_ECONNRESET    ECONNRESET
index 113c7c4396324f32705c055e3a3b5ac13c7c160d..b1a7b36e5ff246953873096c59ebae02bcc7de89 100644 (file)
@@ -38,6 +38,7 @@ typedef DWORD                      ngx_err_t;
 #define NGX_EPIPE                  EPIPE
 #define NGX_EAGAIN                 WSAEWOULDBLOCK
 #define NGX_EINPROGRESS            WSAEINPROGRESS
+#define NGX_EOPNOTSUPP             WSAEOPNOTSUPP
 #define NGX_EADDRINUSE             WSAEADDRINUSE
 #define NGX_ECONNABORTED           WSAECONNABORTED
 #define NGX_ECONNRESET             WSAECONNRESET