Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:19
webmachine
webmachine-1.11.1-git.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File webmachine-1.11.1-git.patch of Package webmachine
diff --git a/include/wm_reqdata.hrl b/include/wm_reqdata.hrl index 551c39a..b684159 100644 --- a/include/wm_reqdata.hrl +++ b/include/wm_reqdata.hrl @@ -33,10 +33,10 @@ | defined_in_create, req_qs = defined_in_create :: [{string(), string()}] | defined_in_create, - req_headers :: webmachine_headers:headers(), + req_headers :: webmachine:headers(), req_body=not_fetched_yet, resp_redirect = false :: boolean(), - resp_headers = webmachine_headers:empty() :: webmachine_headers:headers(), + resp_headers = webmachine_headers:empty() :: webmachine:headers(), resp_body = <<>> :: webmachine:response_body(), %% follow_request : range responce for range request, normal responce for non-range one %% ignore_request : normal resopnse for either range reuqest or non-range one diff --git a/src/webmachine_request.erl b/src/webmachine_request.erl index 7b980bc..3f126dc 100644 --- a/src/webmachine_request.erl +++ b/src/webmachine_request.erl @@ -724,24 +724,27 @@ make_version({1, 0}) -> make_version(_) -> <<"HTTP/1.1 ">>. +-spec update_header_with_content_length(number(), atom(), term()) -> term(). +update_header_with_content_length(Code, _Length, RD) when (Code >= 100 andalso Code < 200) orelse + Code =:= 204 orelse + Code =:= 304 -> + mochiweb_headers:make(wrq:resp_headers(RD)); +update_header_with_content_length(_Code, Length, RD) -> + case Length of + chunked -> + mochiweb_headers:enter( + "Transfer-Encoding","chunked", + mochiweb_headers:make(wrq:resp_headers(RD))); + _ -> + mochiweb_headers:enter( + "Content-Length",integer_to_list(Length), + mochiweb_headers:make(wrq:resp_headers(RD))) + end. + make_headers({Code, _ReasonPhrase}, Length, RD) -> make_headers(Code, Length, RD); make_headers(Code, Length, RD) when is_integer(Code) -> - Hdrs0 = case Code of - 304 -> - mochiweb_headers:make(wrq:resp_headers(RD)); - _ -> - case Length of - chunked -> - mochiweb_headers:enter( - "Transfer-Encoding","chunked", - mochiweb_headers:make(wrq:resp_headers(RD))); - _ -> - mochiweb_headers:enter( - "Content-Length",integer_to_list(Length), - mochiweb_headers:make(wrq:resp_headers(RD))) - end - end, + Hdrs0 = update_header_with_content_length(Code, Length, RD), %% server_name is guaranteed to be set by %% webmachine_app:load_default_app_config/0 {ok, ServerHeader} = application:get_env(webmachine, server_name), @@ -942,6 +945,12 @@ header_test() -> ?assertEqual({HdrValue, ReqState}, get_header_value(HdrName, ReqState)), ?assertEqual({HdrValue, ReqState}, get_req_header(HdrName, ReqState)). +no_content_length_test() -> + ReqData = #wm_reqdata{req_headers = mochiweb_headers:make([])}, + ?assertEqual(nomatch, re:run(make_headers(100, 56, ReqData), "content-length", [caseless])), + ?assertEqual(nomatch, re:run(make_headers(204, 56, ReqData), "content-length", [caseless])), + ?assertMatch({match, _}, re:run(make_headers(200, 56, ReqData), "content-length", [caseless])). + metadata_test() -> Key = "webmachine", Value = "eunit",
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor