From 52bc3261e950505218a715c11b7a191b4aae7254 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Wed, 17 Sep 2025 10:50:35 +0300 Subject: [PATCH] Do not attempt to free outbound ops in clear_immediate_ops (fix #88) --- src/client/msgr_receive.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/client/msgr_receive.cpp b/src/client/msgr_receive.cpp index 2462b336..abc38e1b 100644 --- a/src/client/msgr_receive.cpp +++ b/src/client/msgr_receive.cpp @@ -109,6 +109,7 @@ bool osd_messenger_t::handle_read(int result, osd_client_t *cl) if (!handle_read_buffer(cl, cl->in_buf, result)) { clear_immediate_ops(peer_fd); + handle_immediate_ops(); return false; } } @@ -122,6 +123,7 @@ bool osd_messenger_t::handle_read(int result, osd_client_t *cl) if (!handle_finished_read(cl)) { clear_immediate_ops(peer_fd); + handle_immediate_ops(); return false; } } @@ -140,7 +142,7 @@ void osd_messenger_t::clear_immediate_ops(int peer_fd) size_t i = 0, j = 0; while (i < set_immediate_ops.size()) { - if (set_immediate_ops[i]->peer_fd == peer_fd) + if (set_immediate_ops[i]->peer_fd == peer_fd && set_immediate_ops[i]->op_type == OSD_OP_IN) { delete set_immediate_ops[i]; }