Commit 349ababe authored by jan.koester's avatar jan.koester
Browse files

bugfixes

parent cddd9a40
Loading
Loading
Loading
Loading
Loading
+15 −9
Changes for src/authdb.cpp: 15 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -267,24 +267,30 @@ namespace authdb {
                    return;
                }

                for(;;){
                try {
                    apidb=db.data(did.value);
                }catch(std::exception &e){
                    libhttppp::HttpResponse rep;
                    rep.setState(HTTP500);
                    rep.setContentType("text/html");
                    rep.send(curreq,e.what(),strlen(e.what()));
                    return;
                }catch(...){
                        continue;
                    }
                    break;
                    libhttppp::HttpResponse rep;
                    rep.setState(HTTP500);
                    rep.setContentType("text/html");
                    char msg[]={"internal error loading domain"};
                    rep.send(curreq,msg,sizeof(msg));
                    return;
                }

                if(apidb){
                    apidb->lock();
                    try{
                        ApiController(*apidb,did,curreq,tid,args);
                    }catch(AuthBackendError &e){
                        libhttppp::HttpResponse rep;
                        rep.setState(HTTP500);
                        rep.setContentType("text/html");
                        rep.send(curreq,e.what(),strlen(e.what()));
                    }catch(...){
                        apidb->unlock();
                        throw;
                    }
                    apidb->unlock();
                }else{
+22 −3
Changes for src/client.cpp: 22 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -210,6 +210,15 @@ authdb::Client::Client(const class Client &src){
}

authdb::Client::~Client(){
    ClientConnections *cur=_firstConnection;
    while(cur){
        ClientConnections *next=cur->_next;
        cur->_next=nullptr;
        delete cur;
        cur=next;
    }
    _firstConnection=nullptr;
    _lastConnection=nullptr;
}

authdb::ClientConnections *authdb::Client::addConnection(AuthBackend &backend,const class ClientData &data){
@@ -231,15 +240,25 @@ authdb::ClientConnections *authdb::Client::addConnection(AuthBackend &backend,co
void authdb::Client::delConnection(const uuid::uuid &conid){
    std::lock_guard<std::mutex> guard(_lockConnection);
    ClientConnections *prev=nullptr;
    for(ClientConnections *curdat=_firstConnection; curdat; curdat=curdat->_next){
    for(ClientConnections *curdat=_firstConnection; curdat; ){
        if(curdat->_sessionId==conid){
            ClientConnections *next=curdat->_next;
            if(prev){
                prev->_next=curdat->_next;
                prev->_next=next;
            }else{
                _firstConnection=next;
            }
            if(curdat==_lastConnection){
                _lastConnection=prev;
            }
            curdat->_next=nullptr;
            delete curdat;
        }
            curdat=next;
            break;
        }else{
            prev=curdat;
            curdat=curdat->_next;
        }
    }
}