gh-113812: Allow DatagramTransport.sendto to send empty data (#115199)

Also include the UDP packet header sizes (8 bytes per packet)
in the buffer size reported to the flow control subsystem.
This commit is contained in:
Jamie Phan 2024-02-17 13:38:07 +11:00 committed by GitHub
parent 8db8d7118e
commit 73e8637002
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 50 additions and 16 deletions

View file

@ -1241,8 +1241,6 @@ class _SelectorDatagramTransport(_SelectorTransport, transports.DatagramTranspor
if not isinstance(data, (bytes, bytearray, memoryview)):
raise TypeError(f'data argument must be a bytes-like object, '
f'not {type(data).__name__!r}')
if not data:
return
if self._address:
if addr not in (None, self._address):
@ -1278,7 +1276,7 @@ class _SelectorDatagramTransport(_SelectorTransport, transports.DatagramTranspor
# Ensure that what we buffer is immutable.
self._buffer.append((bytes(data), addr))
self._buffer_size += len(data)
self._buffer_size += len(data) + 8 # include header bytes
self._maybe_pause_protocol()
def _sendto_ready(self):