diff --git a/Lib/test/support.py b/Lib/test/support.py index ddd3ab619a6..2d7f70df07f 100644 --- a/Lib/test/support.py +++ b/Lib/test/support.py @@ -493,14 +493,16 @@ def bind_port(sock, host=HOST): def _is_ipv6_enabled(): """Check whether IPv6 is enabled on this host.""" if socket.has_ipv6: + sock = None try: sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) sock.bind(('::1', 0)) + return True except (socket.error, socket.gaierror): pass - else: - sock.close() - return True + finally: + if sock: + sock.close() return False IPV6_ENABLED = _is_ipv6_enabled() diff --git a/Misc/NEWS b/Misc/NEWS index a109baf039f..dada87b7cf6 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -74,6 +74,12 @@ Tools/Demos * C frames that are garbage-collecting * C frames that are due to the invocation of a PyCFunction +Tests +----- + +- Issue #15277: Fix a resource leak in support.py when IPv6 is disabled. + Patch by Brian Brazil. + Build -----