[Python-modules-commits] [python-tornado] 06/17: Ignore ENOPROTOOPT errors from SO_REUSEADDR or SO_ERROR on AF_UNIX sockets, for

Ondrej Novy onovy at debian.org
Mon Jan 15 13:07:43 UTC 2018


This is an automated email from the git hooks/post-receive script.

onovy pushed a commit to branch master
in repository python-tornado.

commit 7d1cb0dd05fedcdb13740ce24b798b7adf673f31
Author: SVN-Git Migration <python-modules-team at lists.alioth.debian.org>
Date:   Thu Oct 8 13:13:33 2015 -0700

    Ignore ENOPROTOOPT errors from SO_REUSEADDR or SO_ERROR on AF_UNIX sockets, for
    
    systems which do not implement them there.
    Patch-Name: sockopt.patch
---
 tornado/iostream.py |  7 ++++++-
 tornado/netutil.py  | 12 ++++++++++--
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/tornado/iostream.py b/tornado/iostream.py
index 639ed50..279e558 100644
--- a/tornado/iostream.py
+++ b/tornado/iostream.py
@@ -1219,7 +1219,12 @@ class IOStream(BaseIOStream):
         return future
 
     def _handle_connect(self):
-        err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
+        try:
+            err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
+        except socket.error as e:
+            err = e.args[0]
+            if err == errno.ENOPROTOOPT:
+                err = 0
         if err != 0:
             self.error = socket.error(err, os.strerror(err))
             # IOLoop implementations may vary: some of them return
diff --git a/tornado/netutil.py b/tornado/netutil.py
index 5233b20..af8e0ca 100644
--- a/tornado/netutil.py
+++ b/tornado/netutil.py
@@ -172,9 +172,17 @@ def bind_sockets(port, address=None, family=socket.AF_UNSPEC,
             raise
         set_close_exec(sock.fileno())
         if os.name != 'nt':
-            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+            try:
+                sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+            except socket.error as e:
+                if e.args[0] != errno.ENOPROTOOPT:
+                    raise
         if reuse_port:
-            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
+            try:
+                sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
+            except socket.error as e:
+                if e.args[0] != errno.ENOPROTOOPT:
+                    raise
         if af == socket.AF_INET6:
             # On linux, ipv6 sockets accept ipv4 too by default,
             # but this makes it impossible to bind to both

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-tornado.git



More information about the Python-modules-commits mailing list