taskrambler  v0.1.8
Web server and task management solution.
session_cleanup.c File Reference
#include <stdlib.h>
#include <sys/types.h>
#include "class.h"
#include "session.h"
#include "hash.h"
#include "application/application.h"
#include "utils/memory.h"
+ Include dependency graph for session_cleanup.c:

Go to the source code of this file.

Macros

#define _GNU_SOURCE
 

Functions

void applicationSessionCleanup (Application this, time_t now)
 

Detailed Description

Author
Georg Hopp

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file session_cleanup.c.

Macro Definition Documentation

#define _GNU_SOURCE

Definition at line 23 of file session_cleanup.c.

Function Documentation

void applicationSessionCleanup ( Application  this,
time_t  now 
)

Definition at line 36 of file session_cleanup.c.

References hashCleanup(), MEM_FREE, memCalloc(), and SESSION_LIVETIME.

Referenced by applicationAdapterHttpUpdate().

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 }
#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 hashCleanup(Hash)
Definition: cleanup.c:35

+ Here is the call graph for this function:

+ Here is the caller graph for this function: