diff options
| -rw-r--r-- | THANKS | 1 | ||||
| -rw-r--r-- | src/couchdb/couch_httpd.erl | 7 | ||||
| -rw-r--r-- | src/couchdb/couch_httpd_misc_handlers.erl | 9 | 
3 files changed, 14 insertions, 3 deletions
@@ -39,5 +39,6 @@ suggesting improvements or submitting changes. Some of these people are:   * Gustavo Niemeyer   * Joshua Bronson <jabronson@gmail.com>   * Kostis Sagonas <kostis@cs.ntua.gr> + * Matthew Hooker <mwhooker@gmail.com>  For a list of authors see the `AUTHORS` file. diff --git a/src/couchdb/couch_httpd.erl b/src/couchdb/couch_httpd.erl index a3e486f1..d0b2e6c2 100644 --- a/src/couchdb/couch_httpd.erl +++ b/src/couchdb/couch_httpd.erl @@ -18,7 +18,7 @@  -export([header_value/2,header_value/3,qs_value/2,qs_value/3,qs/1,path/1,absolute_uri/2,body_length/1]).  -export([verify_is_server_admin/1,unquote/1,quote/1,recv/2,recv_chunked/4,error_info/1]).  -export([parse_form/1,json_body/1,json_body_obj/1,body/1,doc_etag/1, make_etag/1, etag_respond/3]). --export([primary_header_value/2,partition/1,serve_file/3, server_header/0]). +-export([primary_header_value/2,partition/1,serve_file/3,serve_file/4, server_header/0]).  -export([start_chunked_response/3,send_chunk/2,log_request/2]).  -export([start_response_length/4, send/2]).  -export([start_json_response/2, start_json_response/3, end_json_response/1]). @@ -245,8 +245,11 @@ primary_header_value(#httpd{mochi_req=MochiReq}, Key) ->      MochiReq:get_primary_header_value(Key).  serve_file(#httpd{mochi_req=MochiReq}=Req, RelativePath, DocumentRoot) -> +    serve_file(Req, RelativePath, DocumentRoot, []). + +serve_file(#httpd{mochi_req=MochiReq}=Req, RelativePath, DocumentRoot, ExtraHeaders) ->      {ok, MochiReq:serve_file(RelativePath, DocumentRoot, -        server_header() ++ couch_httpd_auth:cookie_auth_header(Req, []))}. +        server_header() ++ couch_httpd_auth:cookie_auth_header(Req, []) ++ ExtraHeaders)}.  qs_value(Req, Key) ->      qs_value(Req, Key, undefined). diff --git a/src/couchdb/couch_httpd_misc_handlers.erl b/src/couchdb/couch_httpd_misc_handlers.erl index fb761f5b..2d67b321 100644 --- a/src/couchdb/couch_httpd_misc_handlers.erl +++ b/src/couchdb/couch_httpd_misc_handlers.erl @@ -38,7 +38,14 @@ handle_welcome_req(Req, _) ->      send_method_not_allowed(Req, "GET,HEAD").  handle_favicon_req(#httpd{method='GET'}=Req, DocumentRoot) -> -    couch_httpd:serve_file(Req, "favicon.ico", DocumentRoot); +    {{Year,Month,Day},Time} = erlang:localtime(), +    OneYearFromNow = {{Year+1,Month,Day},Time}, +    CachingHeaders = [ +        %favicon should expire a year from now +        {"Cache-Control", "public, max-age=31536000"}, +        {"Expires", httpd_util:rfc1123_date(OneYearFromNow)} +    ], +    couch_httpd:serve_file(Req, "favicon.ico", DocumentRoot, CachingHeaders);  handle_favicon_req(Req, _) ->      send_method_not_allowed(Req, "GET,HEAD").  | 
