summaryrefslogtreecommitdiff
path: root/src/mochiweb/mochiweb_request.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mochiweb/mochiweb_request.erl')
-rw-r--r--src/mochiweb/mochiweb_request.erl25
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)]];