mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 06:11:32 +02:00
[MINOR] stream_sock: enable MSG_MORE when forwarding finite amount of data
While it could be dangerous to enable MSG_MORE on infinite data (eg: interactive sessions), it makes sense to enable it when we know the chunk to be sent is just a part of a larger one.
This commit is contained in:
parent
638cd02e9d
commit
d38b53b896
@ -603,6 +603,7 @@ static int stream_sock_write_loop(struct stream_interface *si, struct buffer *b)
|
|||||||
* the ongoing FIN with the last segment.
|
* the ongoing FIN with the last segment.
|
||||||
* - we know we can't send everything at once and must get back
|
* - we know we can't send everything at once and must get back
|
||||||
* here because of unaligned data
|
* here because of unaligned data
|
||||||
|
* - there is still a finite amount of data to forward
|
||||||
* The test is arranged so that the most common case does only 2
|
* The test is arranged so that the most common case does only 2
|
||||||
* tests.
|
* tests.
|
||||||
*/
|
*/
|
||||||
@ -611,8 +612,8 @@ static int stream_sock_write_loop(struct stream_interface *si, struct buffer *b)
|
|||||||
unsigned int send_flag = MSG_DONTWAIT | MSG_NOSIGNAL;
|
unsigned int send_flag = MSG_DONTWAIT | MSG_NOSIGNAL;
|
||||||
|
|
||||||
if (MSG_MORE &&
|
if (MSG_MORE &&
|
||||||
(((b->flags & (BF_SHUTW|BF_SHUTW_NOW|BF_HIJACK)) == BF_SHUTW_NOW &&
|
((b->to_forward && b->to_forward != BUF_INFINITE_FORWARD) ||
|
||||||
(max == b->send_max)) ||
|
((b->flags & (BF_SHUTW|BF_SHUTW_NOW|BF_HIJACK)) == BF_SHUTW_NOW && (max == b->send_max)) ||
|
||||||
(max != b->l && max != b->send_max))
|
(max != b->l && max != b->send_max))
|
||||||
&& (fdtab[si->fd].flags & FD_FL_TCP)) {
|
&& (fdtab[si->fd].flags & FD_FL_TCP)) {
|
||||||
send_flag |= MSG_MORE;
|
send_flag |= MSG_MORE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user