From 6c0f8ba4dd0fb8958105814265d75a45f5c02e47 Mon Sep 17 00:00:00 2001 From: Xie Zhihao Date: Thu, 27 Oct 2022 14:01:51 +0000 Subject: [PATCH 1/2] network: fix writev Signed-off-by: Xie Zhihao --- source/common/network/io_uring_socket_handle_impl.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/common/network/io_uring_socket_handle_impl.cc b/source/common/network/io_uring_socket_handle_impl.cc index 718a516330e42..aea7306296897 100644 --- a/source/common/network/io_uring_socket_handle_impl.cc +++ b/source/common/network/io_uring_socket_handle_impl.cc @@ -138,7 +138,9 @@ Api::IoCallUint64Result IoUringSocketHandleImpl::writev(const Buffer::RawSlice* uint64_t num_slices_to_write = 0; for (uint64_t i = 0; i < num_slice; ++i) { if (slices[i].mem_ != nullptr && slices[i].len_ != 0) { - buffer.add(slices[i].mem_, slices[i].len_); + iov[num_slices_to_write].iov_base = slices[i].mem_; + iov[num_slices_to_write].iov_len = slices[i].len_; + num_slices_to_write++; } } From e53be184561efdafd1e36cde40b7b3ba4e27a03f Mon Sep 17 00:00:00 2001 From: Xie Zhihao Date: Thu, 27 Oct 2022 14:03:29 +0000 Subject: [PATCH 2/2] network: escape cancel first Signed-off-by: Xie Zhihao --- source/common/network/io_uring_socket_handle_impl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/common/network/io_uring_socket_handle_impl.cc b/source/common/network/io_uring_socket_handle_impl.cc index aea7306296897..0cc102e4dbb3b 100644 --- a/source/common/network/io_uring_socket_handle_impl.cc +++ b/source/common/network/io_uring_socket_handle_impl.cc @@ -460,11 +460,11 @@ void IoUringSocketHandleImpl::FileEventAdapter::onRequestCompletion(const Reques } break; case RequestType::Read: { - ASSERT(req.iohandle_.has_value()); // Read is cancellable. if (result == -ECANCELED) { return; } + ASSERT(req.iohandle_.has_value()); auto& iohandle = req.iohandle_->get(); // This is hacky fix, we should check the req is valid or not. if (iohandle.fd_ == -1) {