Commit 7390b90c authored by jan.koester's avatar jan.koester
Browse files

test

parent 43561530
Loading
Loading
Loading
Loading
Loading
+13 −22
Changes for src/session.cpp: 13 added lines, 22 removed lines.
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@

#include <iostream>
#include <mutex>
#include <set>

#include "session.h"
#include "authdb.h"
@@ -606,32 +605,12 @@ void authdb::ClusterSession::relSession(AuthBackend &backend,uuid::uuid sessioni

void authdb::ClusterSession::listSessions(std::vector<SessionInfo> &out){
    out.clear();
    std::set<std::string> seen_sids;

    // Local sessions
    {
        std::lock_guard<std::mutex> guard(_lock);
        cleanupExpired();
        for(SessionData *cur=_firstData; cur; cur=cur->_next){
            SessionInfo info;
            cur->getSid(info.sid);
            cur->getUid(info.uid);
            cur->getDid(info.did);
            info.username = cur->getUsername();
            seen_sids.insert(std::string(info.sid.c_str()));
            out.push_back(std::move(info));
        }
    }

    // Cluster sessions
    // Use cluster store as single source of truth
    if (g_Cluster && g_Cluster->isRunning()) {
        std::vector<Cluster::SessionInfo> csessions;
        g_Cluster->listAllSessions(csessions);
        for (const auto &cs : csessions) {
            std::string sidstr = cs.sid.c_str();
            if (seen_sids.count(sidstr))
                continue;
            seen_sids.insert(sidstr);
            SessionInfo info;
            info.sid = cs.sid;
            info.uid = cs.uid;
@@ -639,5 +618,17 @@ void authdb::ClusterSession::listSessions(std::vector<SessionInfo> &out){
            info.username = cs.username;
            out.push_back(std::move(info));
        }
    } else {
        // Fallback: local sessions only
        std::lock_guard<std::mutex> guard(_lock);
        cleanupExpired();
        for(SessionData *cur=_firstData; cur; cur=cur->_next){
            SessionInfo info;
            cur->getSid(info.sid);
            cur->getUid(info.uid);
            cur->getDid(info.did);
            info.username = cur->getUsername();
            out.push_back(std::move(info));
        }
    }
}