taskrambler  0.1.9
Web server and task management solution.
session_cleanup.c
Go to the documentation of this file.
1 /**
2  * \file
3  *
4  * \author Georg Hopp
5  *
6  * \copyright
7  * Copyright © 2012 Georg Hopp
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
21  */
22 
23 #define _GNU_SOURCE
24 
25 #include <stdlib.h>
26 #include <sys/types.h>
27 
28 #include "class.h"
29 #include "session.h"
30 #include "hash.h"
32 
33 #include "utils/memory.h"
34 
35 void
36 applicationSessionCleanup(Application this, time_t now)
37 {
38  unsigned int expired = now - this->session_time_ofs;
39  unsigned int i = 0;
40 
41  if (SESSION_LIVETIME <= expired) {
42  expired = SESSION_LIVETIME;
43  }
44 
45  if (0 < expired && SESSION_LIVETIME > expired) {
46  Hash * tmp_buf = memCalloc(SESSION_LIVETIME, sizeof(Hash));
47 
48  memcpy(
49  &(tmp_buf[expired]),
50  this->active_sessions,
51  (SESSION_LIVETIME - expired) * sizeof(Hash));
52  memcpy(
53  tmp_buf,
54  &(this->active_sessions[SESSION_LIVETIME - expired]),
55  expired * sizeof(Hash));
56 
57  MEM_FREE(this->active_sessions);
58  this->active_sessions = tmp_buf;
59  }
60 
61  for (i=0; i<expired; i++) {
62  hashCleanup(this->active_sessions[i]);
63  }
64 
65  this->session_time_ofs = now;
66 }
67 
68 // vim: set ts=4 sw=4:
#define MEM_FREE(seg)
Definition: memory.h:28
void * memCalloc(size_t, size_t)
Definition: memory.c:818
#define SESSION_LIVETIME
Definition: session.h:33
void applicationSessionCleanup(Application this, time_t now)
void hashCleanup(Hash)
Definition: cleanup.c:35