diff --git a/mongoose.c b/mongoose.c
index 6cc7ce300b58a1a4413c27398b33b63bd089feee..44f02beb21fba2b4afd1eae53b683a8c2bc22ccf 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -1514,6 +1514,13 @@ static int match_prefix(const char *pattern, int pattern_len, const char *str) {
   return j;
 }
 
+static int must_hide_file(struct connection *conn, const char *path) {
+  const char *pw_pattern = "**" PASSWORDS_FILE_NAME "$";
+  const char *pattern = conn->server->config_options[HIDE_FILES_PATTERN];
+  return match_prefix(pw_pattern, strlen(pw_pattern), path) > 0 ||
+    (pattern != NULL && match_prefix(pattern, strlen(pattern), path) > 0);
+}
+
 // Return 1 if real file has been found, 0 otherwise
 static int convert_uri_to_file_name(struct connection *conn, char *buf,
                                     size_t buf_len, file_stat_t *st) {
@@ -2234,7 +2241,7 @@ static void call_uri_handler_if_data_is_buffered(struct connection *conn) {
   }
 }
 
-#if !defined(NO_DIRECTORY_LISTING) || !defined(MONGOOSE_NO_DAV)
+#if !defined(MONGOOSE_NO_DIRECTORY_LISTING) || !defined(MONGOOSE_NO_DAV)
 
 #ifdef _WIN32
 struct dirent {
@@ -2316,13 +2323,6 @@ static struct dirent *readdir(DIR *dir) {
 }
 #endif // _WIN32  POSIX opendir/closedir/readdir implementation
 
-static int must_hide_file(struct connection *conn, const char *path) {
-  const char *pw_pattern = "**" PASSWORDS_FILE_NAME "$";
-  const char *pattern = conn->server->config_options[HIDE_FILES_PATTERN];
-  return match_prefix(pw_pattern, strlen(pw_pattern), path) > 0 ||
-    (pattern != NULL && match_prefix(pattern, strlen(pattern), path) > 0);
-}
-
 static int scan_directory(struct connection *conn, const char *dir,
                           struct dir_entry **arr) {
   char path[MAX_PATH_SIZE];
@@ -3368,7 +3368,11 @@ static void open_local_endpoint(struct connection *conn) {
   }
 
 #ifdef MONGOOSE_NO_FILESYSTEM
-  send_http_error(conn, 404, NULL);
+  if (!strcmp(conn->mg_conn.request_method, "OPTIONS")) {
+    send_options(conn);
+  } else {
+    send_http_error(conn, 404, NULL);
+  }
 #else
   exists = convert_uri_to_file_name(conn, path, sizeof(path), &st);
   is_directory = S_ISDIR(st.st_mode);