From e750a47a92b48dfa6faf63a61a71f103871c9e5b Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sat, 14 Sep 2013 19:36:23 +0200 Subject: [PATCH] move file_ops to modules/ctdlsrv/serv_file.c - resolve dependency in session termination via EVT_LOGOUT-hook-function. --- citadel/Makefile.in | 4 ++-- citadel/euidindex.c | 1 - citadel/journaling.c | 1 - citadel/ldap.c | 1 - .../{file_ops.h => modules/ctdlproto/files.h} | 0 .../ctdlproto/serv_file.c} | 23 ++++++++++++++++++- citadel/modules/ctdlproto/serv_messages.c | 2 +- citadel/modules/ctdlproto/serv_user.c | 1 - citadel/modules/listsub/serv_listsub.c | 1 - citadel/modules/network/serv_netmail.c | 1 - citadel/modules/network/serv_netspool.c | 1 - citadel/modules/network/serv_network.c | 1 - .../networkclient/serv_networkclient.c | 1 - citadel/msgbase.c | 3 ++- citadel/scripts/mk_module_init.sh | 2 +- citadel/user_ops.c | 16 ------------- 16 files changed, 28 insertions(+), 31 deletions(-) rename citadel/{file_ops.h => modules/ctdlproto/files.h} (100%) rename citadel/{file_ops.c => modules/ctdlproto/serv_file.c} (97%) diff --git a/citadel/Makefile.in b/citadel/Makefile.in index 8a982d920..7586e782e 100644 --- a/citadel/Makefile.in +++ b/citadel/Makefile.in @@ -76,7 +76,7 @@ SOURCES=utils/aidepost.c utils/citmail.c \ utils/ctdlmigrate.c utils/base64.c utils/chkpwd.c \ utillib/citadel_dirs.c \ citserver.c clientsocket.c config.c control.c $(DATABASE) \ - domain.c serv_extensions.c file_ops.c genstamp.c \ + domain.c serv_extensions.c genstamp.c \ housekeeping.c ical_dezonify.c internet_addressing.c ecrash.c \ locate_host.c auth.c msgbase.c parsedate.c \ room_ops.c euidindex.c server_main.c ldap.c \ @@ -131,7 +131,7 @@ SERV_OBJS = server_main.o utillib/citadel_dirs.o event_client.o \ user_ops.o citserver.o sysdep.o serv_extensions.o \ $(DATABASE:.c=.o) domain.o \ control.o config.o support.o room_ops.o \ - file_ops.o msgbase.o euidindex.o \ + msgbase.o euidindex.o \ locate_host.o housekeeping.o ical_dezonify.o \ internet_addressing.o journaling.o \ parsedate.o genstamp.o ecrash.o threads.o context.o \ diff --git a/citadel/euidindex.c b/citadel/euidindex.c index f103de2d4..85d9ccbf5 100644 --- a/citadel/euidindex.c +++ b/citadel/euidindex.c @@ -36,7 +36,6 @@ #include "citserver.h" #include "room_ops.h" #include "user_ops.h" -#include "file_ops.h" #include "config.h" #include "control.h" #include "euidindex.h" diff --git a/citadel/journaling.c b/citadel/journaling.c index 27cf0580c..4ebb11884 100644 --- a/citadel/journaling.c +++ b/citadel/journaling.c @@ -36,7 +36,6 @@ #include "citserver.h" #include "room_ops.h" #include "user_ops.h" -#include "file_ops.h" #include "config.h" #include "control.h" #include "genstamp.h" diff --git a/citadel/ldap.c b/citadel/ldap.c index 385498443..9035ec813 100644 --- a/citadel/ldap.c +++ b/citadel/ldap.c @@ -51,7 +51,6 @@ int ctdl_require_ldap_version = 3; #include "sysdep_decls.h" #include "support.h" #include "room_ops.h" -#include "file_ops.h" #include "control.h" #include "msgbase.h" #include "config.h" diff --git a/citadel/file_ops.h b/citadel/modules/ctdlproto/files.h similarity index 100% rename from citadel/file_ops.h rename to citadel/modules/ctdlproto/files.h diff --git a/citadel/file_ops.c b/citadel/modules/ctdlproto/serv_file.c similarity index 97% rename from citadel/file_ops.c rename to citadel/modules/ctdlproto/serv_file.c index 098554cd9..2970f1ccd 100644 --- a/citadel/file_ops.c +++ b/citadel/modules/ctdlproto/serv_file.c @@ -30,7 +30,7 @@ #include "citadel.h" #include "server.h" #include "config.h" -#include "file_ops.h" +#include "files.h" #include "sysdep_decls.h" #include "support.h" #include "room_ops.h" @@ -778,6 +778,26 @@ void cmd_nuop(char *cmdbuf) CC->upload_type = UPL_NET; cprintf("%d Ok\n", CIT_OK); } +void files_logout_hook(void) +{ + CitContext *CCC = MyContext(); + + /* + * If there is a download in progress, abort it. + */ + if (CCC->download_fp != NULL) { + fclose(CCC->download_fp); + CCC->download_fp = NULL; + } + + /* + * If there is an upload in progress, abort it. + */ + if (CCC->upload_fp != NULL) { + abort_upl(CCC); + } + +} /*****************************************************************************/ @@ -787,6 +807,7 @@ void cmd_nuop(char *cmdbuf) CTDL_MODULE_INIT(file_ops) { if (!threading) { + CtdlRegisterSessionHook(files_logout_hook, EVT_LOGOUT, PRIO_LOGOUT + 8); CtdlRegisterProtoHook(cmd_delf, "DELF", "Delete a file"); CtdlRegisterProtoHook(cmd_movf, "MOVF", "Move a file"); diff --git a/citadel/modules/ctdlproto/serv_messages.c b/citadel/modules/ctdlproto/serv_messages.c index 4d9230bdd..9f08d880f 100644 --- a/citadel/modules/ctdlproto/serv_messages.c +++ b/citadel/modules/ctdlproto/serv_messages.c @@ -52,7 +52,7 @@ #include "citserver.h" #include "room_ops.h" #include "user_ops.h" -#include "file_ops.h" +#include "files.h" #include "config.h" #include "control.h" #include "genstamp.h" diff --git a/citadel/modules/ctdlproto/serv_user.c b/citadel/modules/ctdlproto/serv_user.c index c8c8aaa2d..a632aa43f 100644 --- a/citadel/modules/ctdlproto/serv_user.c +++ b/citadel/modules/ctdlproto/serv_user.c @@ -49,7 +49,6 @@ #include "sysdep_decls.h" #include "support.h" #include "room_ops.h" -#include "file_ops.h" #include "control.h" #include "msgbase.h" #include "config.h" diff --git a/citadel/modules/listsub/serv_listsub.c b/citadel/modules/listsub/serv_listsub.c index a9fd95bfb..889926ac4 100644 --- a/citadel/modules/listsub/serv_listsub.c +++ b/citadel/modules/listsub/serv_listsub.c @@ -48,7 +48,6 @@ #include "msgbase.h" #include "internet_addressing.h" #include "clientsocket.h" -#include "file_ops.h" #include "ctdl_module.h" /* diff --git a/citadel/modules/network/serv_netmail.c b/citadel/modules/network/serv_netmail.c index d44be9074..d71cbdbfb 100644 --- a/citadel/modules/network/serv_netmail.c +++ b/citadel/modules/network/serv_netmail.c @@ -72,7 +72,6 @@ #include "internet_addressing.h" #include "serv_network.h" #include "clientsocket.h" -#include "file_ops.h" #include "citadel_dirs.h" #include "threads.h" #include "context.h" diff --git a/citadel/modules/network/serv_netspool.c b/citadel/modules/network/serv_netspool.c index be4da12af..c75e682fb 100644 --- a/citadel/modules/network/serv_netspool.c +++ b/citadel/modules/network/serv_netspool.c @@ -72,7 +72,6 @@ #include "internet_addressing.h" #include "serv_network.h" #include "clientsocket.h" -#include "file_ops.h" #include "citadel_dirs.h" #include "threads.h" #include "context.h" diff --git a/citadel/modules/network/serv_network.c b/citadel/modules/network/serv_network.c index c0baa5f9a..998a83df1 100644 --- a/citadel/modules/network/serv_network.c +++ b/citadel/modules/network/serv_network.c @@ -72,7 +72,6 @@ #include "internet_addressing.h" #include "serv_network.h" #include "clientsocket.h" -#include "file_ops.h" #include "citadel_dirs.h" #include "threads.h" #include "context.h" diff --git a/citadel/modules/networkclient/serv_networkclient.c b/citadel/modules/networkclient/serv_networkclient.c index 5d6a6e2dc..2d57f90b7 100644 --- a/citadel/modules/networkclient/serv_networkclient.c +++ b/citadel/modules/networkclient/serv_networkclient.c @@ -66,7 +66,6 @@ #include "msgbase.h" #include "internet_addressing.h" #include "clientsocket.h" -#include "file_ops.h" #include "citadel_dirs.h" #include "threads.h" #include "context.h" diff --git a/citadel/msgbase.c b/citadel/msgbase.c index b09850a4d..1539992d8 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -52,7 +52,6 @@ #include "citserver.h" #include "room_ops.h" #include "user_ops.h" -#include "file_ops.h" #include "config.h" #include "control.h" #include "genstamp.h" @@ -1028,7 +1027,9 @@ void list_this_suff(char *name, char *filename, char *partnum, char *disp, /* * Callback function for mime parser that opens a section for downloading + * we use serv_files function here: */ +extern void OpenCmdResult(char *filename, const char *mime_type); void mime_download(char *name, char *filename, char *partnum, char *disp, void *content, char *cbtype, char *cbcharset, size_t length, char *encoding, char *cbid, void *cbuserdata) diff --git a/citadel/scripts/mk_module_init.sh b/citadel/scripts/mk_module_init.sh index 2bac57e9b..84de37702 100755 --- a/citadel/scripts/mk_module_init.sh +++ b/citadel/scripts/mk_module_init.sh @@ -30,7 +30,7 @@ U_FILE="$CUR_DIR/modules_upgrade.c" /usr/bin/printf "Scanning extension modules for entry points.\n" -STATIC_FIRST_MODULES="citserver control modules euidindex file_ops msgbase nttlist database internet_addressing" +STATIC_FIRST_MODULES="citserver control modules euidindex msgbase nttlist database internet_addressing" DYNAMIC_MODULES=`grep CTDL_MODULE_INIT modules/*/*.c |$SED 's;.*(\(.*\));\1;'` if test -d user_modules; then USER_MODULES=`grep CTDL_MODULE_INIT user_modules/*/*.c |$SED 's;.*(\(.*\));\1;'` diff --git a/citadel/user_ops.c b/citadel/user_ops.c index 3e0791f4a..3e28fec7c 100644 --- a/citadel/user_ops.c +++ b/citadel/user_ops.c @@ -49,7 +49,6 @@ #include "sysdep_decls.h" #include "support.h" #include "room_ops.h" -#include "file_ops.h" #include "control.h" #include "msgbase.h" #include "config.h" @@ -764,21 +763,6 @@ void CtdlUserLogout(void) CCC->curr_user, CCC->cs_pid ); - /* - * If there is a download in progress, abort it. - */ - if (CCC->download_fp != NULL) { - fclose(CCC->download_fp); - CCC->download_fp = NULL; - } - - /* - * If there is an upload in progress, abort it. - */ - if (CCC->upload_fp != NULL) { - abort_upl(CCC); - } - /* Run any hooks registered by modules... */ PerformSessionHooks(EVT_LOGOUT); -- 2.30.2