return ret;
}
-int AuthClientProtocolHandler::do_request(double timeout)
-{
- got_response = false;
- client->client->send_auth_message(msg);
-
- // schedule timeout?
- assert(timeout_event == 0);
- timeout_event = new C_OpTimeout(this, timeout);
- client->timer.add_event_after(timeout, timeout_event);
-
- cond.Wait(lock);
-
- dout(0) << "got_response=" << got_response << " got_timeout=" << got_timeout << dendl;
-
- // finish.
- if (timeout_event) {
- client->timer.cancel_event(timeout_event);
- timeout_event = NULL;
- }
-
- return status;
-}
-
int AuthClientProtocolHandler::do_async_request(double timeout)
{
got_response = false;
return handler->handle_response(ret, iter);
}
-int AuthClientHandler::start_session(AuthClient *client, double timeout)
-{
- Mutex::Locker l(lock);
- this->client = client;
- dout(10) << "start_session" << dendl;
-
- AuthClientAuthenticateHandler handler(this, want, have);
-
- int err;
-
- do {
- err = handler.build_request();
- dout(0) << "handler.build_request returned " << err << dendl;
- if (err < 0)
- return err;
-
- err = handler.do_request(timeout);
- dout(0) << "handler.do_request returned " << err << dendl;
- if (err < 0 && err != -EAGAIN)
- return err;
-
- } while (err == -EAGAIN);
-
- return err;
-}
-
int AuthClientHandler::send_session_request(AuthClient *client, AuthClientProtocolHandler *handler, double timeout)
{
Mutex::Locker l(lock);
this->client = client;
- dout(10) << "start_session" << dendl;
+ dout(10) << "send_session_request" << dendl;
int err = handler->build_request();
dout(0) << "handler.build_request returned " << err << dendl;
return err;
}
-int AuthClientHandler::authorize(uint32_t service_id, double timeout)
-{
- Mutex::Locker l(lock);
- AuthClientAuthorizeHandler handler(this, service_id);
-
- int ret = handler.build_request();
- if (ret < 0)
- return ret;
-
- ret = handler.do_request(timeout);
-
- dout(0) << "authorize returned " << ret << dendl;
-
- return ret;
-}
void AuthClientHandler::tick()
{
int build_request();
int handle_response(int ret, bufferlist::iterator& iter);
- int do_request(double timeout);
void reset() {
status = 0;
int handle_response(int trans_id, Message *response);
- int start_session(AuthClient *client, double timeout);
int send_session_request(AuthClient *client, AuthClientProtocolHandler *handler, double timeout);
- int authorize(uint32_t service_id, double timeout);
void tick();
int build_authorizer(uint32_t service_id, AuthAuthorizer& authorizer);
}
-int MonClient::authenticate(double timeout)
-{
- Mutex::Locker lock(monc_lock);
-
- auth_timeout = timeout;
-
- return auth.start_session(this, timeout);
-}
-
// ---------
void MonClient::_send_mon_message(Message *m, bool force)
return ret;
}
-int MonClient::authorize(double timeout)
-{
- return auth.authorize(CEPH_ENTITY_TYPE_MON, timeout);
-}
-
int MonClient::_start_auth_rotating()
{
if (!auth_principal_needs_rotating_keys(entity_name))