Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc647ad9

Browse files
authored
Revert "bpo-36801: Fix waiting in StreamWriter.drain for closing SSL transport (GH-13098)" (GH-13328)
This reverts commit93aa57a.
1 parent2fef5b0 commitc647ad9

File tree

4 files changed

+8
-46
lines changed

4 files changed

+8
-46
lines changed

‎Lib/asyncio/streams.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,6 @@ async def _drain_helper(self):
208208
self._drain_waiter=waiter
209209
awaitwaiter
210210

211-
def_get_close_waiter(self,stream):
212-
raiseNotImplementedError
213-
214211

215212
classStreamReaderProtocol(FlowControlMixin,protocols.Protocol):
216213
"""Helper class to adapt between Protocol and StreamReader.
@@ -268,9 +265,6 @@ def eof_received(self):
268265
returnFalse
269266
returnTrue
270267

271-
def_get_close_waiter(self,stream):
272-
returnself._closed
273-
274268
def__del__(self):
275269
# Prevent reports about unhandled exceptions.
276270
# Better than self._closed._log_traceback = False hack
@@ -326,7 +320,7 @@ def is_closing(self):
326320
returnself._transport.is_closing()
327321

328322
asyncdefwait_closed(self):
329-
awaitself._protocol._get_close_waiter(self)
323+
awaitself._protocol._closed
330324

331325
defget_extra_info(self,name,default=None):
332326
returnself._transport.get_extra_info(name,default)
@@ -344,12 +338,13 @@ async def drain(self):
344338
ifexcisnotNone:
345339
raiseexc
346340
ifself._transport.is_closing():
347-
# Wait for protocol.connection_lost() call
348-
# Raise connection closing error if any,
349-
# ConnectionResetError otherwise
350-
fut=self._protocol._get_close_waiter(self)
351-
awaitfut
352-
raiseConnectionResetError('Connection lost')
341+
# Yield to the event loop so connection_lost() may be
342+
# called. Without this, _drain_helper() would return
343+
# immediately, and code that calls
344+
# write(...); await drain()
345+
# in a loop would never call connection_lost(), so it
346+
# would not see an error when the socket is closed.
347+
awaitsleep(0,loop=self._loop)
353348
awaitself._protocol._drain_helper()
354349

355350

‎Lib/asyncio/subprocess.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ def __init__(self, limit, loop):
2525
self._transport=None
2626
self._process_exited=False
2727
self._pipe_fds= []
28-
self._stdin_closed=self._loop.create_future()
2928

3029
def__repr__(self):
3130
info= [self.__class__.__name__]
@@ -77,10 +76,6 @@ def pipe_connection_lost(self, fd, exc):
7776
ifpipeisnotNone:
7877
pipe.close()
7978
self.connection_lost(exc)
80-
ifexcisNone:
81-
self._stdin_closed.set_result(None)
82-
else:
83-
self._stdin_closed.set_exception(exc)
8479
return
8580
iffd==1:
8681
reader=self.stdout
@@ -107,10 +102,6 @@ def _maybe_close_transport(self):
107102
self._transport.close()
108103
self._transport=None
109104

110-
def_get_close_waiter(self,stream):
111-
ifstreamisself.stdin:
112-
returnself._stdin_closed
113-
114105

115106
classProcess:
116107
def__init__(self,transport,protocol,loop):

‎Lib/test/test_asyncio/test_streams.py

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -99,29 +99,6 @@ def test_open_unix_connection_no_loop_ssl(self):
9999

100100
self._basetest_open_connection_no_loop_ssl(conn_fut)
101101

102-
@unittest.skipIf(sslisNone,'No ssl module')
103-
deftest_drain_on_closed_writer_ssl(self):
104-
105-
asyncdefinner(httpd):
106-
reader,writer=awaitasyncio.open_connection(
107-
*httpd.address,
108-
ssl=test_utils.dummy_ssl_context())
109-
110-
messages= []
111-
self.loop.set_exception_handler(lambdaloop,ctx:messages.append(ctx))
112-
writer.write(b'GET / HTTP/1.0\r\n\r\n')
113-
data=awaitreader.read()
114-
self.assertTrue(data.endswith(b'\r\n\r\nTest message'))
115-
116-
writer.close()
117-
withself.assertRaises(ConnectionResetError):
118-
awaitwriter.drain()
119-
120-
self.assertEqual(messages, [])
121-
122-
withtest_utils.run_test_server(use_ssl=True)ashttpd:
123-
self.loop.run_until_complete(inner(httpd))
124-
125102
def_basetest_open_connection_error(self,open_connection_fut):
126103
reader,writer=self.loop.run_until_complete(open_connection_fut)
127104
writer._protocol.connection_lost(ZeroDivisionError())

‎Misc/NEWS.d/next/Library/2019-05-05-09-45-44.bpo-36801.XrlFFs.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp