Skip to content

Commit

Permalink
AsyncConnection: Dont send message when local connection is closed
Browse files Browse the repository at this point in the history
Signed-off-by: Haomai Wang <haomai@xsky.com>
  • Loading branch information
yuyuyu101 committed Jan 16, 2016
1 parent 0771efa commit 83eedb9
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions src/msg/async/AsyncConnection.cc
Expand Up @@ -2027,11 +2027,17 @@ int AsyncConnection::send_message(Message *m)
m->set_connection(this);

if (async_msgr->get_myaddr() == get_peer_addr()) { //loopback connection
ldout(async_msgr->cct, 20) << __func__ << " " << *m << " local" << dendl;
Mutex::Locker l(write_lock);
local_messages.push_back(m);
center->dispatch_event_external(local_deliver_handler);
return 0;
ldout(async_msgr->cct, 20) << __func__ << " " << *m << " local" << dendl;
Mutex::Locker l(write_lock);
if (can_write != CLOSED) {
local_messages.push_back(m);
center->dispatch_event_external(local_deliver_handler);
} else {
ldout(async_msgr->cct, 10) << __func__ << " loopback connection closed."
<< " Drop message " << m << dendl;
m->put();
}
return 0;
}

// we don't want to consider local message here, it's too lightweight which
Expand Down

0 comments on commit 83eedb9

Please sign in to comment.