From: Sage Weil Date: Fri, 11 Jun 2010 17:08:10 +0000 (-0700) Subject: mon: make send_reply always consume reply ref (even if not sent); fix caller hackery X-Git-Tag: v0.22~370 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6a40008ca80ee43bc4d9a6641ca5ddb54fc30ab1;p=ceph.git mon: make send_reply always consume reply ref (even if not sent); fix caller hackery --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 537b389be40..99136f2b643 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -453,9 +453,11 @@ void Monitor::send_reply(PaxosServiceMessage *req, Message *reply, entity_inst_t << " for request " << *req << dendl; messenger->send_message(new MRoute(req->session_mon_tid, reply, to), monmap->get_inst(req->session_mon)); - } else + } else { dout(2) << "send_reply mon" << req->session_mon << " dne, dropping reply " << *reply << " to " << *req << " for " << to << dendl; + reply->put(); + } } else { messenger->send_message(reply, to); } @@ -537,12 +539,7 @@ void Monitor::handle_observe(MMonObserve *m) // we own the connection to the requested observer). MonSession *session = m->get_session(); if (!session || !session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_X)) { - bool delete_m = false; - if (m->session_mon) - delete_m = true; send_reply(m, m); - if (delete_m) - m->put(); return; } if (m->machine_id >= PAXOS_NUM) {