From 7eb9c5d7d5ce2cbc5139b34281f772f614332548 Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 9 Feb 2020 17:23:49 -0500 Subject: [PATCH] Fix web/index issue with NULL mime types --- mime.csv | 2 +- src/io/serialize.c | 7 ++++++- src/main.c | 2 +- src/parsing/mime_generated.c | 1 + src/web/serve.c | 7 ++++++- web/search.html | 2 +- 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mime.csv b/mime.csv index b4dcbc6..bef504c 100644 --- a/mime.csv +++ b/mime.csv @@ -320,7 +320,7 @@ video/x-dv, dif|dv video/x-fli, fli video/x-isvideo, isu video/x-motion-jpeg, mjpg -video/x-ms-asf, asf|asx +video/x-ms-asf, asf|asx|wmv video/x-qtc, qtc video/x-sgi-movie, movie|mv application/x-7z-compressed, 7z diff --git a/src/io/serialize.c b/src/io/serialize.c index c2c4f3b..1905a1c 100644 --- a/src/io/serialize.c +++ b/src/io/serialize.c @@ -214,7 +214,12 @@ void read_index_bin(const char *path, const char *index_id, index_func func) { char uuid_str[UUID_STR_LEN]; uuid_unparse(line.uuid, uuid_str); - cJSON_AddStringToObject(document, "mime", mime_get_mime_text(line.mime)); + const char* mime_text = mime_get_mime_text(line.mime); + if (mime_text == NULL) { + cJSON_AddNullToObject(document, "mime"); + } else { + cJSON_AddStringToObject(document, "mime", mime_get_mime_text(line.mime)); + } cJSON_AddNumberToObject(document, "size", (double) line.size); cJSON_AddNumberToObject(document, "mtime", line.mtime); diff --git a/src/main.c b/src/main.c index 11e4816..2803adc 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ #define EPILOG "Made by simon987 . Released under GPL-3.0" -static const char *const Version = "1.2.9"; +static const char *const Version = "1.2.10"; static const char *const usage[] = { "sist2 scan [OPTION]... PATH", "sist2 index [OPTION]... INDEX", diff --git a/src/parsing/mime_generated.c b/src/parsing/mime_generated.c index 3f1d256..d20105b 100644 --- a/src/parsing/mime_generated.c +++ b/src/parsing/mime_generated.c @@ -1293,6 +1293,7 @@ g_hash_table_insert(ext_table, "isu", (gpointer)video_x_isvideo); g_hash_table_insert(ext_table, "mjpg", (gpointer)video_x_motion_jpeg); g_hash_table_insert(ext_table, "asf", (gpointer)video_x_ms_asf); g_hash_table_insert(ext_table, "asx", (gpointer)video_x_ms_asf); +g_hash_table_insert(ext_table, "wmv", (gpointer)video_x_ms_asf); g_hash_table_insert(ext_table, "qtc", (gpointer)video_x_qtc); g_hash_table_insert(ext_table, "movie", (gpointer)video_x_sgi_movie); g_hash_table_insert(ext_table, "mv", (gpointer)video_x_sgi_movie); diff --git a/src/web/serve.c b/src/web/serve.c index b8b49a4..25ea79d 100644 --- a/src/web/serve.c +++ b/src/web/serve.c @@ -181,7 +181,12 @@ int chunked_response_file(const char *filename, const char *mime, } } onion_response_set_length(res, length); - onion_response_set_header(res, "Content-Type", mime); + if (mime != NULL) { + onion_response_set_header(res, "Content-Type", mime); + } else { + onion_response_set_header(res, "Content-Type", "application/octet-stream"); + } + onion_response_write_headers(res); if ((onion_request_get_flags(request) & OR_HEAD) == OR_HEAD) { length = 0; diff --git a/web/search.html b/web/search.html index dd26ae8..549c2fc 100644 --- a/web/search.html +++ b/web/search.html @@ -11,7 +11,7 @@