]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
iostream,netutil: PR feedback from #2353 2392/head
authorBen Darnell <ben@bendarnell.com>
Fri, 18 May 2018 18:45:42 +0000 (14:45 -0400)
committerBen Darnell <ben@bendarnell.com>
Sat, 19 May 2018 23:51:05 +0000 (19:51 -0400)
- Don't swallow errors from SO_REUSEPORT since it's opt-in.
- Use errno_from_exception.
- Add comments

tornado/iostream.py
tornado/netutil.py

index 53ca94eccb6196f2d02f9a01419565230012d81f..89e1e234e4dfb143639b89778b24ed66c5d5735a 100644 (file)
@@ -1413,8 +1413,9 @@ class IOStream(BaseIOStream):
         try:
             err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
         except socket.error as e:
-            err = e.args[0]
-            if err == errno.ENOPROTOOPT:
+            # Hurd doesn't allow SO_ERROR for loopback sockets because all
+            # errors for such sockets are reported synchronously.
+            if errno_from_exception(e) == errno.ENOPROTOOPT:
                 err = 0
         if err != 0:
             self.error = socket.error(err, os.strerror(err))
index 89fe1b3bbaa66b1a2e71dd170d8363bb31acf6d0..e63683ad7e27bea885d82f0e40fbc1decd188faa 100644 (file)
@@ -141,14 +141,11 @@ def bind_sockets(port, address=None, family=socket.AF_UNSPEC,
             try:
                 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
             except socket.error as e:
-                if e.args[0] != errno.ENOPROTOOPT:
+                if errno_from_exception(e) != errno.ENOPROTOOPT:
+                    # Hurd doesn't support SO_REUSEADDR.
                     raise
         if reuse_port:
-            try:
-                sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
-            except socket.error as e:
-                if e.args[0] != errno.ENOPROTOOPT:
-                    raise
+            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
         if af == socket.AF_INET6:
             # On linux, ipv6 sockets accept ipv4 too by default,
             # but this makes it impossible to bind to both
@@ -191,7 +188,8 @@ if hasattr(socket, 'AF_UNIX'):
         try:
             sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
         except socket.error as e:
-            if e.args[0] != errno.ENOPROTOOPT:
+            if errno_from_exception(e) != errno.ENOPROTOOPT:
+                # Hurd doesn't support SO_REUSEADDR
                 raise
         sock.setblocking(0)
         try: