From 1ed51ad535612d5c444a3cc35a331f5e6a68ce30 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 15 Jul 2013 17:16:23 -0700 Subject: [PATCH] msgr: close accepting_pipes from mark_down_all() We need to catch these pipes too, particularly when doing a rebind(), to avoid them leaking through. Signed-off-by: Sage Weil (cherry picked from commit 687fe888b32ac9d41595348dfc82111c8dbf2fcb) --- src/msg/SimpleMessenger.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 09bbb79ec92f2..82f8a508a6492 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -556,6 +556,17 @@ void SimpleMessenger::mark_down_all() { ldout(cct,1) << "mark_down_all" << dendl; lock.Lock(); + for (set::iterator q = accepting_pipes.begin(); q != accepting_pipes.end(); ++q) { + Pipe *p = *q; + ldout(cct,5) << "mark_down_all accepting_pipe " << p << dendl; + p->pipe_lock.Lock(); + p->stop(); + if (p->connection_state) + p->connection_state->clear_pipe(p); + p->pipe_lock.Unlock(); + } + accepting_pipes.clear(); + while (!rank_pipe.empty()) { hash_map::iterator it = rank_pipe.begin(); Pipe *p = it->second; -- 2.39.5