tokio-quiche: always set UDP_SEGMENT cmsg when calling sendmsg() #2060
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.
Current logic avoids setting the UDP_SEGMENT cmsg on sendmsg() calls when sending a single packet over the wire. However, there are niche cases where it's desirable to update the segment size after a socket has been created. If the updated segment size is greater than what the socket was initialized with, and we omit the UDP_SEGMENT cmsg, then the kernel will fall back to the segment size that is configured on the socket and erroneously truncate the packet on the way out.
We now set the UDP_SEGMENT cmsg on each packet no matter what.
To help avoid this footgun, we now initialize GSO on the socket with the maximum possible segment size.