From a5a4785d48a744be30ce261bea0c59ef9718585f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Sun, 10 May 2009 20:05:44 +0000 Subject: [PATCH] * shrinked the rest of these shutdown stuff into the module-handler. --- webcit/context_loop.c | 24 +----------------------- webcit/mk_module_init.sh | 8 +++++--- webcit/paging.c | 9 +++++++++ webcit/roomops.c | 12 ++++++++++++ webcit/serv_func.c | 8 ++++++++ webcit/tcp_sockets.c | 2 ++ 6 files changed, 37 insertions(+), 26 deletions(-) diff --git a/webcit/context_loop.c b/webcit/context_loop.c index 208521386..314313c37 100644 --- a/webcit/context_loop.c +++ b/webcit/context_loop.c @@ -20,28 +20,6 @@ wcsession *SessionList = NULL; /**< our sessions ????*/ pthread_key_t MyConKey; /**< TSD key for MySession() */ - -void DestroySession(wcsession **sessions_to_kill) -{ - close((*sessions_to_kill)->serv_sock); - close((*sessions_to_kill)->chat_sock); -/* -// if ((*sessions_to_kill)->preferences != NULL) { -// free((*sessions_to_kill)->preferences); -// } -*/ - if ((*sessions_to_kill)->cache_fold != NULL) { - free((*sessions_to_kill)->cache_fold); - } - DeleteServInfo(&((*sessions_to_kill)->serv_info)); - free_march_list((*sessions_to_kill)); - - session_destroy_modules(*sessions_to_kill); - - free((*sessions_to_kill)); - (*sessions_to_kill) = NULL; -} - void shutdown_sessions(void) { wcsession *sptr; @@ -101,7 +79,7 @@ void do_housekeeping(void) pthread_mutex_unlock(&sessions_to_kill->SessionMutex); sptr = sessions_to_kill->next; - DestroySession(&sessions_to_kill); + session_destroy_modules(&sessions_to_kill); sessions_to_kill = sptr; --num_sessions; } diff --git a/webcit/mk_module_init.sh b/webcit/mk_module_init.sh index e3c91a1a3..b46d4e389 100755 --- a/webcit/mk_module_init.sh +++ b/webcit/mk_module_init.sh @@ -74,7 +74,7 @@ void shutdown_modules (void); void session_new_modules (wcsession *sess); void session_attach_modules (wcsession *sess); void session_detach_modules (wcsession *sess); -void session_destroy_modules (wcsession *sess); +void session_destroy_modules (wcsession **sess); @@ -333,7 +333,7 @@ cat <>$C_FILE } -void session_destroy_modules (wcsession *sess) +void session_destroy_modules (wcsession **sess) { EOF @@ -344,7 +344,7 @@ cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START lprintf (CTDL_INFO, "Initializing $HOOKNAME\n"); #endif - $HOOK(sess); + $HOOK(*sess); EOF # Add this entry point to the .h file cat <> $H_FILE @@ -358,6 +358,8 @@ done cat <>$C_FILE + free((*sess)); + (*sess) = NULL; } EOF diff --git a/webcit/paging.c b/webcit/paging.c index 7f81049d4..d44c816cb 100644 --- a/webcit/paging.c +++ b/webcit/paging.c @@ -527,3 +527,12 @@ InitModule_PAGING WebcitAddUrlHandler(HKEY("chat_send"), chat_send, 0); WebcitAddUrlHandler(HKEY("ajax_send_instant_message"), ajax_send_instant_message, AJAX); } + + +void +SessionDestroyModule_CHAT +(wcsession *sess) +{ + if (sess->chat_sock > 0) + close(sess->chat_sock); +} diff --git a/webcit/roomops.c b/webcit/roomops.c index 936defa9b..442d167ac 100644 --- a/webcit/roomops.c +++ b/webcit/roomops.c @@ -4126,4 +4126,16 @@ InitModule_ROOMOPS RegisterNamespace("ROOM:INFO", 1, 2, tmplput_ROOM_Value, CTX_ROOMS); } + + +void +SessionDestroyModule_ROOMOPS +(wcsession *sess) +{ + if (sess->cache_fold != NULL) { + free(sess->cache_fold); + } + + free_march_list(sess); +} /*@}*/ diff --git a/webcit/serv_func.c b/webcit/serv_func.c index 2d8188cb0..de6fb0538 100644 --- a/webcit/serv_func.c +++ b/webcit/serv_func.c @@ -647,4 +647,12 @@ InitModule_SERVFUNC /*TODO // RegisterNamespace("SERV:LDAP_SUPP", 0, 0, tmplput_serv_ldap_enabled, 0); */ } + + +void +SessionDestroyModule_SERVFUNC +(wcsession *sess) +{ + DeleteServInfo(&sess->serv_info); +} /*@}*/ diff --git a/webcit/tcp_sockets.c b/webcit/tcp_sockets.c index 42419b179..9c74b5782 100644 --- a/webcit/tcp_sockets.c +++ b/webcit/tcp_sockets.c @@ -686,4 +686,6 @@ SessionDestroyModule_TCPSOCKETS FreeStrBuf(&sess->CLineBuf); FreeStrBuf(&sess->ReadBuf); FreeStrBuf(&sess->MigrateReadLineBuf); + if (sess->serv_sock > 0) + close(sess->serv_sock); } -- 2.30.2