Fix the wrong Content-Length in python-server.py for non-ascii characters.#24480
Merged
karthiknadig merged 2 commits intomicrosoft:mainfrom Nov 26, 2024
Merged
Conversation
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!!! |
…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)
cd9a0cc to
1c8e5f4
Compare
Author
|
Thank you for your review! Looks like the Github Action failed due to the rate limit exceeded. |
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.