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))
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
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: