| 50 | } |
| 51 | |
| 52 | HttpSession HttpSessionStore::getSession(HttpRequest& request, HttpResponse& response, bool allowCreate) |
| 53 | { |
| 54 | QByteArray sessionId=getSessionId(request,response); |
| 55 | mutex.lock(); |
| 56 | if (!sessionId.isEmpty()) |
| 57 | { |
| 58 | HttpSession session=sessions.value(sessionId); |
| 59 | if (!session.isNull()) |
| 60 | { |
| 61 | mutex.unlock(); |
| 62 | // Refresh the session cookie |
| 63 | QByteArray cookieName=settings->value("cookieName","sessionid").toByteArray(); |
| 64 | QByteArray cookiePath=settings->value("cookiePath").toByteArray(); |
| 65 | QByteArray cookieComment=settings->value("cookieComment").toByteArray(); |
| 66 | QByteArray cookieDomain=settings->value("cookieDomain").toByteArray(); |
| 67 | response.setCookie(HttpCookie(cookieName,session.getId(),expirationTime/1000, |
| 68 | cookiePath,cookieComment,cookieDomain,false,false,"Lax")); |
| 69 | session.setLastAccess(); |
| 70 | return session; |
| 71 | } |
| 72 | } |
| 73 | // Need to create a new session |
| 74 | if (allowCreate) |
| 75 | { |
| 76 | QByteArray cookieName=settings->value("cookieName","sessionid").toByteArray(); |
| 77 | QByteArray cookiePath=settings->value("cookiePath").toByteArray(); |
| 78 | QByteArray cookieComment=settings->value("cookieComment").toByteArray(); |
| 79 | QByteArray cookieDomain=settings->value("cookieDomain").toByteArray(); |
| 80 | HttpSession session(true); |
| 81 | Logger::logger()->log(Logger::LANServer, "HttpSessionStore: create new session with ID %s",session.getId().data()); |
| 82 | sessions.insert(session.getId(),session); |
| 83 | response.setCookie(HttpCookie(cookieName,session.getId(),expirationTime/1000, |
| 84 | cookiePath,cookieComment,cookieDomain,false,false,"Lax")); |
| 85 | mutex.unlock(); |
| 86 | return session; |
| 87 | } |
| 88 | // Return a null session |
| 89 | mutex.unlock(); |
| 90 | return HttpSession(); |
| 91 | } |
| 92 | |
| 93 | HttpSession HttpSessionStore::getSession(const QByteArray id) |
| 94 | { |
nothing calls this directly
no test coverage detected