- Tools/Demos - gh-129248: The iOS test runner now strips the log prefix from each line output by the test suite. - gh-104400: Fix several bugs in extraction by switching to an AST parser in pygettext. - Tests - gh-129386: Add test.support.reset_code, which can be used to reset various bytecode-level optimizations and local instrumentation for a function. - gh-128474: Disable test_embed test cases that segfault on BOLT instrument binaries. The tests are only disabled when BOLT is enabled. - gh-128003: Add an option --parallel-threads=N to the regression test runner that runs individual tests in multiple threads in parallel in order to find concurrency bugs. Note that most of the test suite is not yet reviewed for thread-safety or annotated with @thread_unsafe when necessary. - Security - gh-105704: When using urllib.parse.urlsplit() and urllib.parse.urlparse() host parsing would not reject domain names containing square brackets ([ and ]). Square brackets are only valid for IPv6 and IPvFuture hosts according to RFC 3986 Section 3.2.2. - gh-126108: Fix a possible NULL pointer dereference in PySys_AddWarnOptionUnicode(). - gh-80222: Fix bug in the folding of quoted strings when flattening an email message using a modern email policy. Previously when a quoted string was folded so OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python314?expand=0&rev=38
95 lines
4.8 KiB
Diff
95 lines
4.8 KiB
Diff
From 1afcfaa5ce01cd949e570bc9035b3a7b6ccdd2be Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
|
|
Date: Fri, 17 Jan 2025 11:46:19 +0100
|
|
Subject: [PATCH 1/2] gh-128916: Do not set `SO_REUSEPORT` on non-`AF_INET*`
|
|
sockets
|
|
|
|
Do not attempt to set ``SO_REUSEPORT`` on sockets of address familifies other
|
|
than ``AF_INET`` and ``AF_INET6``, as it is meaningless with these address
|
|
families, and the call with fail with Linux kernel 6.12.9 and newer.
|
|
---
|
|
Lib/asyncio/base_events.py | 4 +++-
|
|
Lib/socket.py | 4 +++-
|
|
Lib/socketserver.py | 7 ++++++-
|
|
.../Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst | 3 +++
|
|
4 files changed, 15 insertions(+), 3 deletions(-)
|
|
create mode 100644 Misc/NEWS.d/next/Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst
|
|
|
|
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
|
|
index 6e6e5aaac15caf..85018797db33bb 100644
|
|
--- a/Lib/asyncio/base_events.py
|
|
+++ b/Lib/asyncio/base_events.py
|
|
@@ -1593,7 +1593,9 @@ async def create_server(
|
|
if reuse_address:
|
|
sock.setsockopt(
|
|
socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
|
|
- if reuse_port:
|
|
+ # Since Linux 6.12.9, SO_REUSEPORT is not allowed
|
|
+ # on other address families than AF_INET/AF_INET6.
|
|
+ if reuse_port and af in (socket.AF_INET, socket.AF_INET6):
|
|
_set_reuseport(sock)
|
|
if keep_alive:
|
|
sock.setsockopt(
|
|
diff --git a/Lib/socket.py b/Lib/socket.py
|
|
index be37c24d6174a2..727b0e75f03595 100644
|
|
--- a/Lib/socket.py
|
|
+++ b/Lib/socket.py
|
|
@@ -937,7 +937,9 @@ def create_server(address, *, family=AF_INET, backlog=None, reuse_port=False,
|
|
# Fail later on bind(), for platforms which may not
|
|
# support this option.
|
|
pass
|
|
- if reuse_port:
|
|
+ # Since Linux 6.12.9, SO_REUSEPORT is not allowed
|
|
+ # on other address families than AF_INET/AF_INET6.
|
|
+ if reuse_port and family in (AF_INET, AF_INET6):
|
|
sock.setsockopt(SOL_SOCKET, SO_REUSEPORT, 1)
|
|
if has_ipv6 and family == AF_INET6:
|
|
if dualstack_ipv6:
|
|
diff --git a/Lib/socketserver.py b/Lib/socketserver.py
|
|
index cd028ef1c63b85..35b2723de3babe 100644
|
|
--- a/Lib/socketserver.py
|
|
+++ b/Lib/socketserver.py
|
|
@@ -468,7 +468,12 @@ def server_bind(self):
|
|
"""
|
|
if self.allow_reuse_address and hasattr(socket, "SO_REUSEADDR"):
|
|
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
|
- if self.allow_reuse_port and hasattr(socket, "SO_REUSEPORT"):
|
|
+ # Since Linux 6.12.9, SO_REUSEPORT is not allowed
|
|
+ # on other address families than AF_INET/AF_INET6.
|
|
+ if (
|
|
+ self.allow_reuse_port and hasattr(socket, "SO_REUSEPORT")
|
|
+ and self.address_family in (socket.AF_INET, socket.AF_INET6)
|
|
+ ):
|
|
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
|
|
self.socket.bind(self.server_address)
|
|
self.server_address = self.socket.getsockname()
|
|
diff --git a/Misc/NEWS.d/next/Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst b/Misc/NEWS.d/next/Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst
|
|
new file mode 100644
|
|
index 00000000000000..5d13825fb2b6ab
|
|
--- /dev/null
|
|
+++ b/Misc/NEWS.d/next/Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst
|
|
@@ -0,0 +1,3 @@
|
|
+Do not attempt to set ``SO_REUSEPORT`` on sockets of address familifies
|
|
+other than ``AF_INET`` and ``AF_INET6``, as it is meaningless with these
|
|
+address families, and the call with fail with Linux kernel 6.12.9 and newer.
|
|
|
|
From 8f8f0d67742ce151ea9b104ad0396660e2660b09 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
|
|
Date: Fri, 17 Jan 2025 11:57:41 +0000
|
|
Subject: [PATCH 2/2] Apply suggestions from code review
|
|
|
|
Co-authored-by: Vinay Sajip <vinay_sajip@yahoo.co.uk>
|
|
---
|
|
.../next/Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/Misc/NEWS.d/next/Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst b/Misc/NEWS.d/next/Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst
|
|
index 5d13825fb2b6ab..f2db341ef81621 100644
|
|
--- a/Misc/NEWS.d/next/Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst
|
|
+++ b/Misc/NEWS.d/next/Library/2025-01-17-11-46-16.gh-issue-128916.GEePbO.rst
|
|
@@ -1,3 +1,3 @@
|
|
-Do not attempt to set ``SO_REUSEPORT`` on sockets of address familifies
|
|
+Do not attempt to set ``SO_REUSEPORT`` on sockets of address families
|
|
other than ``AF_INET`` and ``AF_INET6``, as it is meaningless with these
|
|
address families, and the call with fail with Linux kernel 6.12.9 and newer.
|