def accept(self):
s, self._last_accepted = self._socket.accept()
- fd = duplicate(s.fileno())
- conn = Connection(fd)
- s.close()
- return conn
+ return Connection(s.detach())
def close(self):
self._socket.close()
family = address_type(address)
with socket.socket( getattr(socket, family) ) as s:
s.connect(address)
- fd = duplicate(s.fileno())
- conn = Connection(fd)
- return conn
+ return Connection(s.detach())
#
# Definitions for connections based on named pipes
def _finalize_pipe_listener(queue, address):
sub_debug('closing listener with address=%r', address)
for handle in queue:
- close(handle)
+ win32.CloseHandle(handle)
def PipeClient(address):
'''
raise
if timeout is not None:
timeout = deadline - time.time()
-
-
-# Late import because of circular import
-from multiprocessing.forking import duplicate, close
Library
-------
+- Issue #14522: Avoid duplicating socket handles in multiprocessing.connection.
+ Patch by sbt.
+
- Don't Py_DECREF NULL variable in io.IncrementalNewlineDecoder.
- Issue #8515: Set __file__ when run file in IDLE.