void Monitor::handle_route(MRoute *m)
{
+ Session *session = (Session *)m->get_connection()->get_priv();
+ //check privileges
+ if (session && !session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_X)) {
+ dout(0) << "MRoute received from entity without appropriate perms! "
+ << dendl;
+ session->put();
+ delete m;
+ return;
+ }
dout(10) << "handle_route " << *m->msg << " to " << m->dest << dendl;
// look it up
m->msg = NULL;
}
delete m;
+ if (session) session->put();
}
void Monitor::resend_routed_requests()
switch (m->get_type()) {
case MSG_ROUTE:
- ALLOW_MESSAGES_FROM(CEPH_ENTITY_TYPE_MON);
handle_route((MRoute*)m);
break;