deinitialize the TLS cache prior to fork

This commit is contained in:
Nikos Mavrogiannopoulos
2013-02-05 09:03:58 +01:00
parent 7d3a83a1e3
commit 2e43570fde
4 changed files with 35 additions and 0 deletions

View File

@@ -305,6 +305,8 @@ void clear_lists(main_server_st *s)
close(ctmp->fd);
list_del(&ctmp->list);
}
tls_cache_deinit(s->tls_db);
}
static void kill_children(struct proc_list_st* clist)

View File

@@ -129,3 +129,23 @@ tls_cache_db_st * db;
*_db = db;
}
void tls_cache_deinit(tls_cache_db_st* db)
{
tls_cache_st* cache;
int bkt;
struct hlist_node *pos, *tmp;
hash_for_each_safe(db->entry, bkt, pos, tmp, cache, list) {
if (cache->session_data_size > 0) {
memset(cache->session_data, 0, cache->session_data_size);
cache->session_data_size = 0;
cache->session_id_size = 0;
}
hash_del(&cache->list);
free(cache);
db->entries--;
}
return;
}

View File

@@ -59,5 +59,6 @@ typedef struct
} tls_cache_db_st;
void tls_cache_init(struct cfg_st* config, tls_cache_db_st** db);
void tls_cache_deinit(tls_cache_db_st* db);
#endif

View File

@@ -37,6 +37,18 @@ inline static void tun_st_init(struct tun_st* ts)
INIT_LIST_HEAD(&ts->lease_list.list);
}
inline static void tun_st_deinit(struct tun_st* ts)
{
struct list_head *cq;
struct list_head *pos;
struct lease_st *ltmp;
list_for_each_safe(pos, cq, &ts->lease_list.list) {
ltmp = list_entry(pos, struct lease_st, list);
list_del(&ltmp->list);
}
}
int open_tun(const struct cfg_st *config, struct tun_st* tun, struct lease_st **lease);
#endif