Commit df97cbe7 authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #14522: Avoid duplicating socket handles in multiprocessing.connection.

Patch by sbt.
parent 52a11f1f
...@@ -591,10 +591,7 @@ class SocketListener(object): ...@@ -591,10 +591,7 @@ class SocketListener(object):
def accept(self): def accept(self):
s, self._last_accepted = self._socket.accept() s, self._last_accepted = self._socket.accept()
fd = duplicate(s.fileno()) return Connection(s.detach())
conn = Connection(fd)
s.close()
return conn
def close(self): def close(self):
self._socket.close() self._socket.close()
...@@ -609,9 +606,7 @@ def SocketClient(address): ...@@ -609,9 +606,7 @@ def SocketClient(address):
family = address_type(address) family = address_type(address)
with socket.socket( getattr(socket, family) ) as s: with socket.socket( getattr(socket, family) ) as s:
s.connect(address) s.connect(address)
fd = duplicate(s.fileno()) return Connection(s.detach())
conn = Connection(fd)
return conn
# #
# Definitions for connections based on named pipes # Definitions for connections based on named pipes
...@@ -665,7 +660,7 @@ if sys.platform == 'win32': ...@@ -665,7 +660,7 @@ if sys.platform == 'win32':
def _finalize_pipe_listener(queue, address): def _finalize_pipe_listener(queue, address):
sub_debug('closing listener with address=%r', address) sub_debug('closing listener with address=%r', address)
for handle in queue: for handle in queue:
close(handle) win32.CloseHandle(handle)
def PipeClient(address): def PipeClient(address):
''' '''
...@@ -885,7 +880,3 @@ else: ...@@ -885,7 +880,3 @@ else:
raise raise
if timeout is not None: if timeout is not None:
timeout = deadline - time.time() timeout = deadline - time.time()
# Late import because of circular import
from multiprocessing.forking import duplicate, close
...@@ -19,6 +19,9 @@ Core and Builtins ...@@ -19,6 +19,9 @@ Core and Builtins
Library Library
------- -------
- Issue #14522: Avoid duplicating socket handles in multiprocessing.connection.
Patch by sbt.
- Don't Py_DECREF NULL variable in io.IncrementalNewlineDecoder. - Don't Py_DECREF NULL variable in io.IncrementalNewlineDecoder.
- Issue #8515: Set __file__ when run file in IDLE. - Issue #8515: Set __file__ when run file in IDLE.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment