Fix the wrong Content-Length in python-server.py for non-ascii characters. - #24480
Merged
Karthik Nadig (karthiknadig) merged 2 commits intoNov 26, 2024
Conversation
Karthik Nadig (karthiknadig)
requested a review
from Anthony Kim (anthonykim1)
November 22, 2024 13:36
Karthik Nadig (karthiknadig)
requested review from
Eleanor Boyd (eleanorjboyd) and
Karthik Nadig (karthiknadig)
November 25, 2024 05:23
Karthik Nadig (karthiknadig)
approved these changes
Nov 25, 2024
Member
|
Thanks for identifying the issue and providing a fix for it 🚀. We really appreciate it. Happy Coding!!! |
Karthik Nadig (karthiknadig)
enabled auto-merge (squash)
November 25, 2024 05:24
…ters. Content-Length is the data in bytes, not len of str. We should use sys.stdin.buffer.read instead of sys.stdin.read to receive bytes. _send_message should calculate "Content-Length" from bytes, not str.
We should use stdin.buffer.readline instead of stdin.readline because stdin.read* and stdin.buffer.read* should be used at the same time. (stdin.read* refers the internal buffer)
Karthik Nadig (karthiknadig)
force-pushed
the
fix-content-length-for-python-repl-server
branch
from
November 26, 2024 06:17
cd9a0cc to
1c8e5f4
Compare
Author
|
Thank you for your review! Looks like the Github Action failed due to the rate limit exceeded. |
Karthik Nadig (karthiknadig)
requested a review
from Courtney Webster (cwebster-99)
November 26, 2024 15:17
Courtney Webster (cwebster-99)
approved these changes
Nov 26, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Resolves: #24479
python-server.pycurrently usessys.stdin.readfor reading the input, and it receives the length instr(utf-8 string).ref: https://docs.python.org/3/library/sys.html
On the other "Content-Length" is the size in bytes, therefore we should not pass
content_lengthtosys.stdin.read. For example,print("こんにちは世界")'s length is 16 in str, but 30 in bytes.This PR have two changes.
sys.stdin.read(content_length)withsys.stdin.buffer.read(content_length).decode()._send_messagecalculate "Content-Length" from bytes, not str.By these changes, original issue #24479 can be resolved.