Don't send another request after initial handshake if we don't
need an auth ticket.
server_challenge = ch.server_challenge;
dout(10) << " got initial server challenge " << server_challenge << dendl;
starting = false;
+
+ tickets.invalidate_ticket(CEPH_ENTITY_TYPE_AUTH);
return -EAGAIN;
}
have &= ~service_id;
}
+void CephXTicketManager::invalidate_ticket(uint32_t service_id)
+{
+ map<uint32_t, CephXTicketHandler>::iterator iter = tickets_map.find(service_id);
+ if (iter != tickets_map.end())
+ iter->second.invalidate_ticket();
+}
+
/*
* PRINCIPAL: verify our attempt to authenticate succeeded. fill out
* this ServiceTicket with the result.
bool have_key();
bool need_key();
+
+ void invalidate_ticket() {
+ have_key_flag = 0;
+ }
};
struct CephXTicketManager {
bool need_key(uint32_t service_id);
void set_have_need_key(uint32_t service_id, uint32_t& have, uint32_t& need);
void validate_tickets(uint32_t mask, uint32_t& have, uint32_t& need);
+ void invalidate_ticket(uint32_t service_id);
};