We need to catch these pipes too, particularly when doing a rebind(),
to avoid them leaking through.
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit
687fe888b32ac9d41595348dfc82111c8dbf2fcb)
{
ldout(cct,1) << "mark_down_all" << dendl;
lock.Lock();
+ for (set<Pipe*>::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<entity_addr_t,Pipe*>::iterator it = rank_pipe.begin();
Pipe *p = it->second;