Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit df97cbe

Browse files
committed
Issue #14522: Avoid duplicating socket handles in multiprocessing.connection.
Patch by sbt.
1 parent 52a11f1 commit df97cbe

2 files changed

Lines changed: 6 additions & 12 deletions

File tree

Lib/multiprocessing/connection.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -591,10 +591,7 @@ def __init__(self, address, family, backlog=1):
591591

592592
def accept(self):
593593
s, self._last_accepted = self._socket.accept()
594-
fd = duplicate(s.fileno())
595-
conn = Connection(fd)
596-
s.close()
597-
return conn
594+
return Connection(s.detach())
598595

599596
def close(self):
600597
self._socket.close()
@@ -609,9 +606,7 @@ def SocketClient(address):
609606
family = address_type(address)
610607
with socket.socket( getattr(socket, family) ) as s:
611608
s.connect(address)
612-
fd = duplicate(s.fileno())
613-
conn = Connection(fd)
614-
return conn
609+
return Connection(s.detach())
615610

616611
#
617612
# Definitions for connections based on named pipes
@@ -665,7 +660,7 @@ def accept(self):
665660
def _finalize_pipe_listener(queue, address):
666661
sub_debug('closing listener with address=%r', address)
667662
for handle in queue:
668-
close(handle)
663+
win32.CloseHandle(handle)
669664

670665
def PipeClient(address):
671666
'''
@@ -885,7 +880,3 @@ def wait(object_list, timeout=None):
885880
raise
886881
if timeout is not None:
887882
timeout = deadline - time.time()
888-
889-
890-
# Late import because of circular import
891-
from multiprocessing.forking import duplicate, close

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ Core and Builtins
1919
Library
2020
-------
2121

22+
- Issue #14522: Avoid duplicating socket handles in multiprocessing.connection.
23+
Patch by sbt.
24+
2225
- Don't Py_DECREF NULL variable in io.IncrementalNewlineDecoder.
2326

2427
- Issue #8515: Set __file__ when run file in IDLE.

0 commit comments

Comments
 (0)