Visitar URL original
Auto-port 5.0: Fix limit of bytes for gathering writes being ignored after the first buffer by netty-project-bot · Pull Request #18404 · netty/netty · GitHub
Skip to content

Auto-port 5.0: Fix limit of bytes for gathering writes being ignored after the first buffer - #18404

Open
netty-project-bot wants to merge 1 commit into
5.0from
auto-port-pr-18396-to-5.0
Open

netty-project-bot wants to merge 1 commit into
5.0from
auto-port-pr-18396-to-5.0

Conversation

@netty-project-bot

Copy link
Copy Markdown
Contributor

Auto-port of #18396 to 5.0
Cherry-picked commit: 1ed8174


Motivation:

netty_unix_filedescriptor_writev(...) stops adding buffers to a gathering
write once their size exceeds maxBytesToWrite. The first buffer is always
added, even if it is bigger than the limit. The comparison
bytesLength > maxBytesToWrite compared a size_t with a jlong, so the
jlong was converted to unsigned. After the first buffer was bigger than
maxBytesToWrite, the remaining value became negative and so was converted
to a huge unsigned value. The check then never triggered again, and all
the remaining buffers (up to IOV_MAX) were added to the writev(...) call.
For example, with a limit of 64KB and a first buffer of 1MB, all the
buffers that follow were included as well, which ignores the limit that
is used to adapt the size of gathering writes.

Modification:

Compare the length as signed jlong, so a negative remaining value is
handled correctly. This is done in all four variants of the loop.

Result:

The limit of bytes for a gathering write is respected, also if the first
buffer is bigger than the limit.

… buffer (#18396)

Motivation:

netty_unix_filedescriptor_writev(...) stops adding buffers to a
gathering
write once their size exceeds maxBytesToWrite. The first buffer is
always
added, even if it is bigger than the limit. The comparison
`bytesLength > maxBytesToWrite` compared a size_t with a jlong, so the
jlong was converted to unsigned. After the first buffer was bigger than
maxBytesToWrite, the remaining value became negative and so was
converted
to a huge unsigned value. The check then never triggered again, and all
the remaining buffers (up to IOV_MAX) were added to the writev(...)
call.
For example, with a limit of 64KB and a first buffer of 1MB, all the
buffers that follow were included as well, which ignores the limit that
is used to adapt the size of gathering writes.

Modification:

Compare the length as signed jlong, so a negative remaining value is
handled correctly. This is done in all four variants of the loop.

Result:

The limit of bytes for a gathering write is respected, also if the first
buffer is bigger than the limit.

(cherry picked from commit 1ed8174)
@testlens-app

testlens-app Bot commented Nov 14, 2026

Copy link
Copy Markdown

✅ All tests passed ✅

🏷️ Commit: 0349187
▶️ Tests: 31956 executed
⚪️ Checks: 20/20 completed


Learn more about TestLens at testlens.app/docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants