From 5f6300e8c5a1f7913289c1901a8079ec00ba1a4f Mon Sep 17 00:00:00 2001 From: Xie Zhihao Date: Wed, 16 Nov 2022 09:59:12 +0000 Subject: [PATCH] [backport] network: drain after writing Signed-off-by: Xie Zhihao --- source/common/network/io_uring_socket_handle_impl.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/source/common/network/io_uring_socket_handle_impl.cc b/source/common/network/io_uring_socket_handle_impl.cc index 8c5151518b10f..cfd3f4ac380d4 100644 --- a/source/common/network/io_uring_socket_handle_impl.cc +++ b/source/common/network/io_uring_socket_handle_impl.cc @@ -163,14 +163,12 @@ Api::IoCallUint64Result IoUringSocketHandleImpl::writev(const Buffer::RawSlice* } Api::IoCallUint64Result IoUringSocketHandleImpl::write(Buffer::Instance& buffer) { - // If buffer gets written and drained, the following writev will return bytes_already_wrote_ - // directly. - if (bytes_already_wrote_ > 0) { - buffer.drain(static_cast(bytes_already_wrote_)); - } - Buffer::RawSliceVector slices = buffer.getRawSlices(); - return writev(slices.begin(), slices.size()); + auto result = writev(slices.begin(), slices.size()); + if (result.return_value_ > 0) { + buffer.drain(static_cast(result.return_value_)); + } + return result; } Api::IoCallUint64Result