diff --git a/src/msg/async/AsyncMessenger.cc b/src/msg/async/AsyncMessenger.cc index 043a2e46fbb..b7aa8241eab 100644 --- a/src/msg/async/AsyncMessenger.cc +++ b/src/msg/async/AsyncMessenger.cc @@ -201,6 +201,7 @@ void Processor::accept() accept_error_num = 0; continue; } else { + --w->references; if (r == -EINTR) { continue; } else if (r == -EAGAIN) { diff --git a/src/msg/async/AsyncMessenger.h b/src/msg/async/AsyncMessenger.h index cd8ad3c8b83..6e18281f1b9 100644 --- a/src/msg/async/AsyncMessenger.h +++ b/src/msg/async/AsyncMessenger.h @@ -397,7 +397,7 @@ public: */ void unregister_conn(const AsyncConnectionRef& conn) { std::lock_guard l{deleted_lock}; - if (!accepting_conns.count(conn)) + if (!accepting_conns.count(conn) || anon_conns.count(conn)) conn->get_perf_counter()->dec(l_msgr_active_connections); deleted_conns.emplace(std::move(conn)); conn->unregister();