GeezerVison is showing github.com — gh-160622: Fix socket recv() and recvfrom() with MSG_TRUNC by ViderStar · Pull Request #160677 · python/cpython
Conversation
ViderStar
commented
Oct 25, 2026
•
edited by bedevere-app
Bot
Loading
Uh oh!
There was an error while loading. Please reload this page.
With MSG_TRUNC, Linux recv(2)/recvfrom(2) return the real length of the datagram, which can be larger than the buffer. Since gh-157226, PyBytesWriter_FinishWithSize() rejects a size larger than the allocated one, so sock.recv(n, MSG_TRUNC) and sock.recvfrom(n, MSG_TRUNC) raise ValueError after the datagram has already been consumed.
This clamps the returned length to the requested size, so only the bytes actually received are returned (as suggested in gh-69121). recv_into() and recvfrom_into() are unchanged: they still return the value from the system call as is, which is the way to get the full datagram length.
Tests: added testRecvTrunc and testRecvFromTrunc to BasicUDPTest. On a Linux debug build they fail on main with ValueError: size larger than allocated size and pass with this change; full test_socket passes on Linux and macOS.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
With MSG_TRUNC, recv() and recvfrom() can return the real length of
the datagram, which may be larger than the requested size. Since
PyBytesWriter_FinishWithSize() now rejects a size larger than the
allocated one, this raised ValueError after the datagram had already
been consumed. Return only the bytes actually received instead.
|
All commit authors signed the Contributor License Agreement.

|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Assignees
No one assigned
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
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.