]> git.kaiwu.me - nginx.git/commitdiff
Core: handle getsockopt(TCP_FASTOPEN) failures.
authorPiotr Sikora <piotr@cloudflare.com>
Thu, 30 Jan 2014 22:58:21 +0000 (14:58 -0800)
committerPiotr Sikora <piotr@cloudflare.com>
Thu, 30 Jan 2014 22:58:21 +0000 (14:58 -0800)
Linux returns EOPNOTSUPP for non-TCP sockets and ENOPROTOOPT for TCP
sockets, because getsockopt(TCP_FASTOPEN) is not implemented so far.

While there, lower the log level from ALERT to NOTICE to match other
getsockopt() failures.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
src/core/ngx_connection.c
src/os/unix/ngx_errno.h
src/os/win32/ngx_errno.h

index 21e986c711dbdbc0975e5820338305d9ca1b6495..15f4f3c908e3ab488c01b8f68f4dd3d2a21068ce 100644 (file)
@@ -97,7 +97,7 @@ ngx_set_inherited_sockets(ngx_cycle_t *cycle)
     ngx_uint_t                 i;
     ngx_listening_t           *ls;
     socklen_t                  olen;
-#if (NGX_HAVE_DEFERRED_ACCEPT)
+#if (NGX_HAVE_DEFERRED_ACCEPT || NGX_HAVE_TCP_FASTOPEN)
     ngx_err_t                  err;
 #endif
 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
@@ -223,9 +223,13 @@ ngx_set_inherited_sockets(ngx_cycle_t *cycle)
                        (void *) &ls[i].fastopen, &olen)
             == -1)
         {
-            ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_socket_errno,
-                          "getsockopt(TCP_FASTOPEN) %V failed, ignored",
-                          &ls[i].addr_text);
+            err = ngx_socket_errno;
+
+            if (err != NGX_EOPNOTSUPP && err != NGX_ENOPROTOOPT) {
+                ngx_log_error(NGX_LOG_NOTICE, cycle->log, err,
+                              "getsockopt(TCP_FASTOPEN) %V failed, ignored",
+                              &ls[i].addr_text);
+            }
 
             ls[i].fastopen = -1;
         }
index 663e460d95eda1ffa412a70d7d525209d44e703a..16cafda31075c34299bff15d1b3d94a847487955 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_ENOPROTOOPT   ENOPROTOOPT
 #define NGX_EOPNOTSUPP    EOPNOTSUPP
 #define NGX_EADDRINUSE    EADDRINUSE
 #define NGX_ECONNABORTED  ECONNABORTED
index b1a7b36e5ff246953873096c59ebae02bcc7de89..fd32145635f9d2f2d60ab10adb9fae1b35bf8ac6 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_ENOPROTOOPT            WSAENOPROTOOPT
 #define NGX_EOPNOTSUPP             WSAEOPNOTSUPP
 #define NGX_EADDRINUSE             WSAEADDRINUSE
 #define NGX_ECONNABORTED           WSAECONNABORTED