Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
gh-113812: Allow DatagramTransport.sendto to send empty data#115199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
@gvanrossum -- This might cause an issue with the flow control of the transport. Since the buffer size is calculated with only the payload (and not the entire datagram). The write buffer could in theory be flooded with zero-length datagrams, and the high watermark will never be crossed. cpython/Lib/asyncio/selector_events.py Line 1279 in67d6bed
|
Oh, that's a very good point. I think we could add a constant value to the "buffer size" for each packet added -- the only use for the buffer size is to interact with flow control. In fact, after skimming theUDP Wikipedia page, I think we can add 8 for each packet, since that's the protocol's header size. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
LGTM, but let's do something about flow control first.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
LG -- I'll merge now!
Sorry, I'd like one more doc change. The code and docs are actually fine, but I feel this deserves a What's New entry (Doc/whatsnew/3.13.rst). A bullet in the existing |
No worries :) Let me know what you think of this wording I just added! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Thanks! Will merge later tonight.
ordinary-jamie commentedFeb 17, 2024 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Sorry Guido, just pushed a documentation change to for the version change note in the Documentation Edit: Also pushed a typo fix (repeated "will now") sorry! |
Thanks again,@ordinary-jamie! |
…ython#115199)Also include the UDP packet header sizes (8 bytes per packet)in the buffer size reported to the flow control subsystem.
…ython#115199)Also include the UDP packet header sizes (8 bytes per packet)in the buffer size reported to the flow control subsystem.
…ython#115199)Also include the UDP packet header sizes (8 bytes per packet)in the buffer size reported to the flow control subsystem.
Uh oh!
There was an error while loading.Please reload this page.
Update
DatagramTransport.sendto
method tonot return when data is an empty bytes object. This allows users to send zero-length datagrams (used for example in Time Protocol RFC 868).📚 Documentation preview 📚:https://cpython-previews--115199.org.readthedocs.build/