From: Gregory P. Smith Date: Sun, 17 Nov 2013 22:19:32 +0000 (+0000) Subject: Fix test.support.bind_port() to not cause an error when Python was compiled X-Git-Tag: v3.4.0b1~217^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=162307fa3558341b82570a42b2f023b9623df822;p=thirdparty%2FPython%2Fcpython.git Fix test.support.bind_port() to not cause an error when Python was compiled on a system with SO_REUSEPORT defined in the headers but run on a system with an OS kernel that does not support that reasonably new socket option. --- diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index dbd784673731..233b13adcd91 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -570,9 +570,15 @@ def bind_port(sock, host=HOST): raise TestFailed("tests should never set the SO_REUSEADDR " \ "socket option on TCP/IP sockets!") if hasattr(socket, 'SO_REUSEPORT'): - if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) == 1: - raise TestFailed("tests should never set the SO_REUSEPORT " \ - "socket option on TCP/IP sockets!") + try: + if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) == 1: + raise TestFailed("tests should never set the SO_REUSEPORT " \ + "socket option on TCP/IP sockets!") + except OSError: + # Python's socket module was compiled using modern headers + # thus defining SO_REUSEPORT but this process is running + # under an older kernel that does not support SO_REUSEPORT. + pass if hasattr(socket, 'SO_EXCLUSIVEADDRUSE'): sock.setsockopt(socket.SOL_SOCKET, socket.SO_EXCLUSIVEADDRUSE, 1) diff --git a/Misc/NEWS b/Misc/NEWS index c30c6bc4def7..1ea0e47cee80 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -13,6 +13,10 @@ Core and Builtins Library ------- +- Fix test.support.bind_port() to not cause an error when Python was compiled + on a system with SO_REUSEPORT defined in the headers but run on a system + with an OS kernel that does not support that reasonably new socket option. + - Fix compilation error under gcc of the ctypes module bundled libffi for arm. - Issue #19523: Closed FileHandler leak which occurred when delay was set.