From 492b58d64b5b6419f6627b609927de2991c58d56 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Thu, 16 Sep 2021 08:29:38 +0200 Subject: pasta, tcp: Break splice() loop once we've written everything that was read That's a guarantee that we don't need to retry writing. Signed-off-by: Stefano Brivio --- tcp.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'tcp.c') diff --git a/tcp.c b/tcp.c index 6e4b99b..eab5c13 100644 --- a/tcp.c +++ b/tcp.c @@ -2689,10 +2689,15 @@ eintr: SPLICE_F_MOVE); if (written > 0) { - if (move_from == conn->from) + if (move_from == conn->from) { conn->from_written += written; - else + if (conn->from_read == conn->from_written) + break; + } else { conn->to_written += written; + if (conn->to_read == conn->to_written) + break; + } } if (written < 0) { -- cgit v1.2.3