X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fdownloads.c;h=8363982082be08cf2a1ea6a8742e9526d200704a;hb=c82a9b990b775ffd78b18925dbc00c7bb06e0a24;hp=f7f9c9dc52d390bea015b6fdee455b44ff3267c9;hpb=3841dfefb6b086720b6d5d9af39aaf8b19730e6d;p=citadel.git diff --git a/webcit/downloads.c b/webcit/downloads.c index f7f9c9dc5..836398208 100644 --- a/webcit/downloads.c +++ b/webcit/downloads.c @@ -13,6 +13,8 @@ #include "webcit.h" #include "webserver.h" +CtxType CTX_FILELIST = CTX_NONE; + extern void output_static(const char* What); extern char* static_dirs[]; @@ -268,12 +270,13 @@ void download_file(void) if (GetServerStatus(Buf, NULL) == 2) { StrBufCutLeft(Buf, 4); bytes = StrBufExtract_long(Buf, 0, '|'); - if (!force_download) { - StrBufExtract_token(ContentType, Buf, 3, '|'); - } + StrBufExtract_token(ContentType, Buf, 3, '|'); serv_read_binary(WCC->WBuf, bytes, Buf); serv_puts("CLOS"); StrBuf_ServGetln(Buf); + CheckGZipCompressionAllowed (SKEY(ContentType)); + if (force_download) + FlushStrBuf(ContentType); http_transmit_thing(ChrPtr(ContentType), 0); } else { StrBufCutLeft(Buf, 4); @@ -395,6 +398,7 @@ void output_image(void) /** Write it to the browser */ if (!IsEmptyStr(MimeType)) { + CheckGZipCompressionAllowed (MimeType, strlen(MimeType)); http_transmit_thing(MimeType, 0); FreeStrBuf(&Buf); return; @@ -420,6 +424,7 @@ void InitModule_DOWNLOAD (void) { + RegisterCTX(CTX_FILELIST); RegisterIterator("ROOM:FILES", 0, NULL, LoadFileList, NULL, DeleteHash, CTX_FILELIST, CTX_NONE, @@ -461,7 +466,7 @@ InitModule_DOWNLOAD RegisterNamespace("FILE:MIMETYPE", 0, 2, tmplput_FILEMIMETYPE, NULL, CTX_FILELIST); RegisterNamespace("FILE:COMMENT", 0, 2, tmplput_FILE_COMMENT, NULL, CTX_FILELIST); - RegisterConditional(HKEY("COND:FILE:ISPIC"), 0, Conditional_FILE_ISPIC, CTX_FILELIST); + RegisterConditional("COND:FILE:ISPIC", 0, Conditional_FILE_ISPIC, CTX_FILELIST); WebcitAddUrlHandler(HKEY("image"), "", 0, output_image, ANONYMOUS); WebcitAddUrlHandler(HKEY("display_mime_icon"), "", 0, display_mime_icon , ANONYMOUS);