On Wed, 27 Oct 2021 17:38:27 +0200 Karsten Graul wrote:
What we found out was that applications called sendmsg() with large data
buffers using blocking sockets. This led to the described situation, were the
solution was to early return to user space even if not all data were sent yet.
Userspace applications should not have a problem with the fact that sendmsg()
returns a smaller byte count than requested.
Reverting this patch would bring back the stalled connection problem.
I'm not sure. The man page for send says:
When the message does not fit into the send buffer of the socket,
send() normally blocks, unless the socket has been placed in nonblock‐
ing I/O mode. In nonblocking mode it would fail with the error EAGAIN
or EWOULDBLOCK in this case.
dunno if that's required by POSIX or just a best practice.