diff options
Diffstat (limited to 'src/mochiweb/mochiweb_request.erl')
-rw-r--r-- | src/mochiweb/mochiweb_request.erl | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/mochiweb/mochiweb_request.erl b/src/mochiweb/mochiweb_request.erl index 8225778cb..980f5ad01 100644 --- a/src/mochiweb/mochiweb_request.erl +++ b/src/mochiweb/mochiweb_request.erl @@ -600,9 +600,9 @@ maybe_redirect(RelPath, FullPath, ExtraHeaders) -> end. maybe_serve_file(File, ExtraHeaders) -> - case file:read_file_info(File) of + case read_file_info(File) of {ok, FileInfo} -> - LastModified = httpd_util:rfc1123_date(FileInfo#file_info.mtime), + LastModified = couch_util:rfc1123_date(FileInfo#file_info.mtime), case get_header_value("if-modified-since") of LastModified -> respond({304, ExtraHeaders, ""}); @@ -624,9 +624,28 @@ maybe_serve_file(File, ExtraHeaders) -> not_found(ExtraHeaders) end. +read_file_info(File) -> + try + file:read_file_info(File, [{time, universal}]) + catch error:undef -> + case file:read_file_info(File) of + {ok, FileInfo} -> + {ok, FileInfo#file_info{ + atime=to_universal(FileInfo#file_info.atime), + mtime=to_universal(FileInfo#file_info.mtime), + ctime=to_universal(FileInfo#file_info.ctime) + }}; + Else -> + Else + end + end. + +to_universal(LocalTime) -> + erlang:localtime_to_universaltime(LocalTime). + server_headers() -> [{"Server", "MochiWeb/1.0 (" ++ ?QUIP ++ ")"}, - {"Date", httpd_util:rfc1123_date()}]. + {"Date", couch_util:rfc1123_date()}]. make_code(X) when is_integer(X) -> [integer_to_list(X), [" " | httpd_util:reason_phrase(X)]]; |