Loading src/admin.cpp +0 −5 Changes for src/admin.cpp: 0 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -1135,11 +1135,6 @@ namespace authdb { sid = csid; AuthSession.remSession(sid); // Also remove from cluster if (g_Cluster && g_Cluster->isRunning()) { g_Cluster->removeSessionBySid(sid); } json_object *jobj = json_object_new_object(); json_object_object_add(jobj, "status", json_object_new_string("ok")); sendJson(curreq, jobj); Loading src/session.cpp +26 −10 Changes for src/session.cpp: 26 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -482,19 +482,17 @@ const authdb::SessionData *authdb::Session::getSession(uuid::uuid sessionid){ } void authdb::Session::remSession(uuid::uuid sessionid){ // Always remove from cluster (covers all nodes) if (g_Cluster && g_Cluster->isRunning()) { g_Cluster->removeSessionBySid(sessionid); } // Remove from local linked list if present std::lock_guard<std::mutex> guard(_SessionLock); SessionData *prev=nullptr; for(SessionData *cur=_firstData; cur; cur=cur->_next){ if(cur->_sid==sessionid){ // Remove from cluster if (g_Cluster && g_Cluster->isRunning()) { uuid::uuid uid, did; cur->getUid(uid); cur->getDid(did); g_Cluster->removeSession(uid, did); } if(prev) prev->_next=cur->_next; Loading @@ -504,10 +502,8 @@ void authdb::Session::remSession(uuid::uuid sessionid){ if(cur==_lastData) _lastData=prev; SessionData *ne=cur->_next; cur->_next=nullptr; delete cur; cur=ne; break; } prev=cur; Loading @@ -529,6 +525,26 @@ void authdb::Session::relSession(AuthBackend &backend,uuid::uuid sessionid){ } } // Not found locally — try to import from cluster if(!cursess && g_Cluster && g_Cluster->isRunning()){ uuid::uuid sid, uid, did; std::vector<uuid::uuid> members; std::string c_username; std::vector<std::pair<uuid::uuid, bool>> gpo_results; if(g_Cluster->fetchSessionBySid(sessionid, sid, uid, did, members, c_username, gpo_results)){ cursess = new SessionData(sid, uid, did, members); cursess->_username = c_username; cursess->setGPOResults(gpo_results); if(!_firstData){ _firstData = cursess; _lastData = _firstData; }else{ _lastData->_next = cursess; _lastData = _lastData->_next; } } } if(!cursess) throw AuthBackendError("reload session: sessionid not found !"); Loading Loading
src/admin.cpp +0 −5 Changes for src/admin.cpp: 0 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -1135,11 +1135,6 @@ namespace authdb { sid = csid; AuthSession.remSession(sid); // Also remove from cluster if (g_Cluster && g_Cluster->isRunning()) { g_Cluster->removeSessionBySid(sid); } json_object *jobj = json_object_new_object(); json_object_object_add(jobj, "status", json_object_new_string("ok")); sendJson(curreq, jobj); Loading
src/session.cpp +26 −10 Changes for src/session.cpp: 26 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -482,19 +482,17 @@ const authdb::SessionData *authdb::Session::getSession(uuid::uuid sessionid){ } void authdb::Session::remSession(uuid::uuid sessionid){ // Always remove from cluster (covers all nodes) if (g_Cluster && g_Cluster->isRunning()) { g_Cluster->removeSessionBySid(sessionid); } // Remove from local linked list if present std::lock_guard<std::mutex> guard(_SessionLock); SessionData *prev=nullptr; for(SessionData *cur=_firstData; cur; cur=cur->_next){ if(cur->_sid==sessionid){ // Remove from cluster if (g_Cluster && g_Cluster->isRunning()) { uuid::uuid uid, did; cur->getUid(uid); cur->getDid(did); g_Cluster->removeSession(uid, did); } if(prev) prev->_next=cur->_next; Loading @@ -504,10 +502,8 @@ void authdb::Session::remSession(uuid::uuid sessionid){ if(cur==_lastData) _lastData=prev; SessionData *ne=cur->_next; cur->_next=nullptr; delete cur; cur=ne; break; } prev=cur; Loading @@ -529,6 +525,26 @@ void authdb::Session::relSession(AuthBackend &backend,uuid::uuid sessionid){ } } // Not found locally — try to import from cluster if(!cursess && g_Cluster && g_Cluster->isRunning()){ uuid::uuid sid, uid, did; std::vector<uuid::uuid> members; std::string c_username; std::vector<std::pair<uuid::uuid, bool>> gpo_results; if(g_Cluster->fetchSessionBySid(sessionid, sid, uid, did, members, c_username, gpo_results)){ cursess = new SessionData(sid, uid, did, members); cursess->_username = c_username; cursess->setGPOResults(gpo_results); if(!_firstData){ _firstData = cursess; _lastData = _firstData; }else{ _lastData->_next = cursess; _lastData = _lastData->_next; } } } if(!cursess) throw AuthBackendError("reload session: sessionid not found !"); Loading