From f4ea3137077490388fb6299288cda931008b4856 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Wed, 30 Dec 2020 16:55:37 +0300 Subject: [PATCH] Fix cl->read_op being freed without calling the completion callback --- messenger.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/messenger.cpp b/messenger.cpp index 7d24abe8..e1bad003 100644 --- a/messenger.cpp +++ b/messenger.cpp @@ -348,7 +348,14 @@ void osd_messenger_t::stop_client(int peer_fd) } if (cl->read_op) { - delete cl->read_op; + if (cl->read_op->callback) + { + cancel_op(cl->read_op); + } + else + { + delete cl->read_op; + } cl->read_op = NULL; } for (auto rit = read_ready_clients.begin(); rit != read_ready_clients.end(); rit++)