From 2a89f766b3c4917001de03a06bfbecb1ce25675f Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Mon, 28 Nov 2011 15:03:17 +0100 Subject: Use one-thread-per-connection and fix up Session locking. --- server/src/admin_connection.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'server/src/admin_connection.cc') 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 act = env.sessions.activeSessions(); std::vector::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++; -- cgit v1.2.3