GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-160622: Fix socket recv() and recvfrom() with MSG_TRUNC by ViderStar · Pull Request #160677 · python/cpython

Conversation

@ViderStar

@ViderStar ViderStar commented Oct 25, 2026 •
edited by bedevere-app Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

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.

  • Issue: socket.recv() and recvfrom() with MSG_TRUNC raise ValueError and lose the datagram since 3.15.1 #160622

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ViderStar
pythongh-160622: Fix socket recv() and recvfrom() with MSG_TRUNC
1be335d
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.
@python-cla-bot

python-cla-bot Bot commented Oct 25, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

All commit authors signed the Contributor License Agreement.

CLA signed

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app bedevere-app Bot added the awaiting review label Oct 25, 2026
@bedevere-app bedevere-app Bot mentioned this pull request Oct 25, 2026
socket.recv() and recvfrom() with MSG_TRUNC raise ValueError and lose the datagram since 3.15.1 #160622
Open
@ViderStar
Merge branch 'main' into pythongh-160622-recv-msg-trunc
579fbe8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

awaiting review

Projects

None yet

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.

1 participant

@ViderStar
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.