From 0ae06c81dee275c4bd2b0d7f699af2e0101d5fc9 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 26 Jul 2010 15:56:33 -0700 Subject: [PATCH] msgr: fix direct send to loopback connection If we send directly to the local/loopback connection, we need to queue it for local delivery, not go through the usual send paths. This fixes lost replies to messages sent to self (e.g., reply to local anchortable). Signed-off-by: Sage Weil --- src/msg/SimpleMessenger.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 87b9bf00893f3..3887faa77ff5b 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -2341,7 +2341,10 @@ void SimpleMessenger::submit_message(Message *m, Pipe *pipe) } lock.Lock(); - { + if (pipe == dispatch_queue.local_pipe) { + dout(20) << "submit_message " << *m << " local" << dendl; + dispatch_queue.local_delivery(m, m->get_priority()); + } else { pipe->pipe_lock.Lock(); if (pipe->state == Pipe::STATE_CLOSED) { dout(20) << "submit_message " << *m << " ignoring closed pipe " << pipe->peer_addr << dendl; -- 2.39.5