summaryrefslogtreecommitdiff
path: root/server/src/admin_connection.cc
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2011-11-28 15:03:17 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2011-11-28 15:03:17 +0100
commit2a89f766b3c4917001de03a06bfbecb1ce25675f (patch)
tree03f2e68488a5dad0619651c771912e8759fddfdc /server/src/admin_connection.cc
parentdd1fb6e16ff777d3e098076d1015c6c565b51bb7 (diff)
Use one-thread-per-connection and fix up Session locking.
Diffstat (limited to 'server/src/admin_connection.cc')
-rw-r--r--server/src/admin_connection.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/server/src/admin_connection.cc b/server/src/admin_connection.cc
index 6ad7642..60c09d0 100644
--- a/server/src/admin_connection.cc
+++ b/server/src/admin_connection.cc
@@ -36,7 +36,11 @@
static std::string admin_sessionunlock(Environment &env, std::string id)
{
- Session *session = env.sessions.session(id);
+ // NOTE: Returned session is returned in locked state!
+ Session *session = NULL;
+ SessionAutounlock l(&session);
+
+ session = env.sessions.lockedSession(id);
if(session) {
if(session->isReadonly()) {
env.sessions.deleteSession(id);
@@ -56,8 +60,10 @@ static std::string admin_listactivesessions(Environment &env)
std::vector<std::string> act = env.sessions.activeSessions();
std::vector<std::string>::iterator i = act.begin();
while(i != act.end()) {
- Session *s = env.sessions.session(*i);
- SessionAutolock lock(*s);
+ // NOTE: Returned session is returned in locked state!
+ Session *s = NULL;
+ SessionAutounlock l(&s);
+ s = env.sessions.lockedSession(*i);
str += "Session " + *i + ": "+s->templ+" on "+s->patientid+" "+
std::string(s->idle()?"[idle]":"[active]")+"\n";
i++;