// lossy channel?
if (policy.lossy) {
ldout(msgr->cct,10) << "fault on lossy channel, failing" << dendl;
- fail();
+
+ stop();
+
+ // disconnect from Connection, and mark it failed. future messages
+ // will be dropped.
+ assert(connection_state);
+ connection_state->clear_pipe(this);
+
+ in_q->discard_queue();
+ discard_queue();
+
+ msgr->dispatch_queue.queue_reset(connection_state);
return;
}
}
}
-void Pipe::fail()
-{
- ldout(msgr->cct,10) << "fail" << dendl;
- assert(pipe_lock.is_locked());
-
- stop();
-
- in_q->discard_queue();
- discard_queue();
-
- msgr->dispatch_queue.queue_reset(connection_state);
-}
-
void Pipe::was_session_reset()
{
assert(pipe_lock.is_locked());