gh-142352: Fix start_tls() to transfer buffered data from StreamReader #142354
+189
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #142352
Summary
When using
StreamWriter.start_tls()to upgrade a connection to TLS mid-stream, any data already buffered in theStreamReaderwas lost. This commonly occurs when implementing servers that support the PROXY protocol.Changes
_transfer_buffered_data_to_ssl()method toBaseEventLoopthat transfers buffered data fromStreamReader._buffertoSSLProtocol._incomingbefore the TLS handshake beginsTest plan
test_streams.pymake patchcheckpasses