Welcome! Log In Create A New Profile

Advanced

[PATCH] Core: handle getsockopt(TCP_FASTOPEN) failures.

Piotr Sikora
January 28, 2014 11:22PM
Hey guys,
I was tempted to just remove getsockopt(TCP_FASTOPEN),
but hopefully Linux will implement it one day, so this change
should be more future-proof ;)

Best regards,
Piotr Sikora


# HG changeset patch
# User Piotr Sikora <piotr@cloudflare.com>
# Date 1390968940 28800
# Tue Jan 28 20:15:40 2014 -0800
# Node ID ae13ab8f53fe451d2201a68091ddecc3d36d582d
# Parent fdb67cfc957d110ea887961cc8c08a590df5f62c
Core: handle getsockopt(TCP_FASTOPEN) failures.

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>

diff -r fdb67cfc957d -r ae13ab8f53fe src/core/ngx_connection.c
--- a/src/core/ngx_connection.c Tue Jan 28 15:40:46 2014 +0400
+++ b/src/core/ngx_connection.c Tue Jan 28 20:15:40 2014 -0800
@@ -97,7 +97,7 @@ ngx_set_inherited_sockets(ngx_cycle_t *c
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 *c
(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_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;
}
diff -r fdb67cfc957d -r ae13ab8f53fe src/os/unix/ngx_errno.h
--- a/src/os/unix/ngx_errno.h Tue Jan 28 15:40:46 2014 +0400
+++ b/src/os/unix/ngx_errno.h Tue Jan 28 20:15:40 2014 -0800
@@ -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
diff -r fdb67cfc957d -r ae13ab8f53fe src/os/win32/ngx_errno.h
--- a/src/os/win32/ngx_errno.h Tue Jan 28 15:40:46 2014 +0400
+++ b/src/os/win32/ngx_errno.h Tue Jan 28 20:15:40 2014 -0800
@@ -38,6 +38,7 @@ typedef DWORD ngx_e
#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

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[PATCH] Core: handle getsockopt(TCP_FASTOPEN) failures.

Piotr Sikora 779 January 28, 2014 11:22PM

Re: [PATCH] Core: handle getsockopt(TCP_FASTOPEN) failures.

Ruslan Ermilov 351 January 29, 2014 09:30AM

Re: [PATCH] Core: handle getsockopt(TCP_FASTOPEN) failures.

Maxim Dounin 364 January 29, 2014 09:44AM

Re: [PATCH] Core: handle getsockopt(TCP_FASTOPEN) failures.

Piotr Sikora 340 January 30, 2014 06:08PM

Re: [PATCH] Core: handle getsockopt(TCP_FASTOPEN) failures.

Maxim Dounin 403 January 31, 2014 01:04PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 140
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready