try {
if (start) {
// new session
- s->auth_handler->start_session(entity_name, &response_bl,
- &s->con->peer_caps_info);
- ret = 0;
+ ret = s->auth_handler->start_session(entity_name, &response_bl,
+ &s->con->peer_caps_info);
} else {
// request
ret = s->auth_handler->handle_request(
wait_for_active(op, new C_RetryMessage(this,op));
goto done;
}
- if (mon->ms_handle_authentication(s->con.get()) > 0) {
+ if (!s->authenticated &&
+ mon->ms_handle_authentication(s->con.get()) > 0) {
finished = true;
}
} catch (const buffer::error &err) {
<< " " << *s << dendl;
AuthCapsInfo &caps_info = con->get_peer_caps_info();
+ int ret = 0;
if (caps_info.allow_all) {
s->caps.set_allow_all();
s->authenticated = true;
+ ret = 1;
}
- int ret = 1;
if (caps_info.caps.length()) {
bufferlist::const_iterator p = caps_info.caps.cbegin();
string str;
if (ret >= 0) {
if (s->caps.parse(str, NULL)) {
s->authenticated = true;
+ ret = 1;
} else {
derr << __func__ << " unparseable caps '" << str << "' for "
<< con->get_peer_entity_name() << dendl;