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 <sage@newdream.net>
}
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;