# HG changeset patch
# User Olaf Wintermann <olaf.wintermann@gmail.com>
# Date 1678617737 -3600
# Node ID 019c22775f7c92b70d4b18b5121fe8cbc4ad1dab
# Parent  d22ff46c171cfdd56588d01f30b861eac0beea90
add force-type SAF

diff -r d22ff46c171c -r 019c22775f7c src/server/daemon/ws-fn.c
--- a/src/server/daemon/ws-fn.c	Sun Mar 12 11:29:02 2023 +0100
+++ b/src/server/daemon/ws-fn.c	Sun Mar 12 11:42:17 2023 +0100
@@ -51,6 +51,7 @@
     { "redirect", redirect, NULL, NULL, 0},
     { "simple-rewrite", simple_rewrite, NULL, NULL, 0},
     { "type-by-extension", object_type_by_extension, NULL, NULL, 0},
+    { "force-type", object_type_force_type, NULL, NULL, 0},
     { "send-file", send_file, NULL, NULL, 0},
     { "common-index", service_index, NULL, NULL, 0},
     { "service-hello", service_hello, NULL, NULL, 0},
diff -r d22ff46c171c -r 019c22775f7c src/server/safs/objecttype.c
--- a/src/server/safs/objecttype.c	Sun Mar 12 11:29:02 2023 +0100
+++ b/src/server/safs/objecttype.c	Sun Mar 12 11:42:17 2023 +0100
@@ -79,3 +79,20 @@
     pblock_kvinsert(pb_key_content_type, ct.ptr, ct.length, rq->srvhdrs);
     return REQ_PROCEED;
 }
+
+int object_type_force_type(pblock *pb, Session *sn, Request *rq) {
+    char *type = pblock_findkeyval(pb_key_type, pb);
+    
+    if(!type) {
+        return REQ_NOACTION;
+    }
+    
+    char *ct = pblock_findkeyval(pb_key_content_type, rq->srvhdrs);
+    if(ct) {
+        return REQ_NOACTION;
+    }
+    
+    pblock_kvinsert(pb_key_content_type, type, strlen(type), rq->srvhdrs);
+    
+    return REQ_PROCEED;
+}
diff -r d22ff46c171c -r 019c22775f7c src/server/safs/objecttype.h
--- a/src/server/safs/objecttype.h	Sun Mar 12 11:29:02 2023 +0100
+++ b/src/server/safs/objecttype.h	Sun Mar 12 11:42:17 2023 +0100
@@ -39,6 +39,8 @@
     
 int object_type_by_extension(pblock *pb, Session *sn, Request *rq);
 
+int object_type_force_type(pblock *pb, Session *sn, Request *rq);
+
 #ifdef	__cplusplus
 }
 #endif