]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: make send_reply always consume reply ref (even if not sent); fix caller hackery
authorSage Weil <sage@newdream.net>
Fri, 11 Jun 2010 17:08:10 +0000 (10:08 -0700)
committerSage Weil <sage@newdream.net>
Fri, 11 Jun 2010 17:08:10 +0000 (10:08 -0700)
src/mon/Monitor.cc

index 537b389be400443d1e16f720c24ed4541e3f8b61..99136f2b6436dd8a64a30af870ecd0da737e5454 100644 (file)
@@ -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) {