Browse Source

some changes on session handlings.

release0.1.5
Georg Hopp 12 years ago
parent
commit
93e1d2a167
  1. 68
      src/application/adapter/http/update.c

68
src/application/adapter/http/update.c

@ -173,31 +173,25 @@ void
applicationAdapterHttpUpdate(void * _this, void * subject)
{
ApplicationAdapterHttp this = _this;
HttpWorker worker = (HttpWorker)subject;
HttpWorker worker = (HttpWorker)subject;
char * sid;
Session session;
char buf[200];
size_t nbuf;
time_t now = time(NULL);
sid = getSessionId(worker->current_request->cookies);
session = applicationSessionGet(this->application, sid);
if (NULL == session) {
session = applicationSessionStart(this->application);
}
nbuf = sprintf(buf, SESS_HEADER,
session->id,
SESSION_LIVETIME,
session->livetime - time(NULL));
queuePut(
worker->additional_headers,
new(HttpHeader, CSTRA("X-TaskramblerSession"), buf, nbuf));
nbuf = sprintf(buf, "sid=%s;Path=/", session->id);
queuePut(
worker->additional_headers,
new(HttpHeader, CSTRA("Set-Cookie"), buf, nbuf));
// send session cookie
nbuf = sprintf(buf, "sid=%s;Path=/", session->id);
queuePut(
worker->additional_headers,
new(HttpHeader, CSTRA("Set-Cookie"), buf, nbuf));
}
if (0 == strcmp("POST", worker->current_request->method)) {
if (0 == strcmp("/login/", worker->current_request->path)) {
@ -224,17 +218,27 @@ applicationAdapterHttpUpdate(void * _this, void * subject)
return;
}
// if (0 == strcmp("/sess/", worker->current_request->path)) {
// if (NO_SESSION_SID == sid
// || NULL == applicationSessionGet(this->application, sid)) {
// sid = applicationSessionStart(this->application, NULL, 0);
// }
//
// worker->current_response =
// (HttpMessage)httpResponseSession(
// applicationSessionGet(this->application, sid));
// return;
// }
if (0 == strcmp("/logout/", worker->current_request->path)) {
applicationSessionStop(
this->application,
session);
// remove session cookie
nbuf = sprintf(buf, "sid=%s;Path=/;Max-Age=-3600", session->id);
queuePut(
worker->additional_headers,
new(HttpHeader, CSTRA("Set-Cookie"), buf, nbuf));
worker->current_response =
(HttpMessage)httpResponseUser(session->user);
return;
}
if (0 == strcmp("/sessinfo/", worker->current_request->path)) {
worker->current_response =
(HttpMessage)httpResponseSession(session);
return;
}
if (0 == strcmp("/randval/", worker->current_request->path)) {
if (NULL != session->user) {
@ -247,6 +251,20 @@ applicationAdapterHttpUpdate(void * _this, void * subject)
}
}
}
// if (0 < session->livetime - now) {
// nbuf = sprintf(buf, SESS_HEADER,
// session->id,
// SESSION_LIVETIME,
// session->livetime - now);
// queuePut(
// worker->additional_headers,
// new(HttpHeader, CSTRA("X-TaskramblerSession"), buf, nbuf));
// } else {
// nbuf = sprintf(buf, "sid=%s;Path=/;Max-Age=-3600", session->id);
// }
}
// vim: set ts=4 sw=4:
Loading…
Cancel
Save