Loading src/authdb.cpp +15 −9 Changes for src/authdb.cpp: 15 added lines, 9 removed lines. Original line number Diff line number Diff line Loading @@ -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{ Loading src/client.cpp +22 −3 Changes for src/client.cpp: 22 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -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){ Loading @@ -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; } } } Loading Loading
src/authdb.cpp +15 −9 Changes for src/authdb.cpp: 15 added lines, 9 removed lines. Original line number Diff line number Diff line Loading @@ -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{ Loading
src/client.cpp +22 −3 Changes for src/client.cpp: 22 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -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){ Loading @@ -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; } } } Loading