diff options
author | Jakub Witczak <kuba@erlang.org> | 2021-09-06 10:10:31 +0200 |
---|---|---|
committer | Jakub Witczak <kuba@erlang.org> | 2021-09-06 16:54:11 +0200 |
commit | 08f5ac3f83dd30393ae13f393d504d5f686951c3 (patch) | |
tree | e084cc78ef189a98e0e1fe7de3aa7b8fada8baa2 /lib/inets/src/http_server/httpd_script_env.erl | |
parent | 111b86355fad10659573b1c01aaac85c64a62c81 (diff) | |
download | erlang-08f5ac3f83dd30393ae13f393d504d5f686951c3.tar.gz |
inets: fix for HTTP headers handling for mod_esi
Diffstat (limited to 'lib/inets/src/http_server/httpd_script_env.erl')
-rw-r--r-- | lib/inets/src/http_server/httpd_script_env.erl | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/lib/inets/src/http_server/httpd_script_env.erl b/lib/inets/src/http_server/httpd_script_env.erl index aa50538ec2..04ca069f5e 100644 --- a/lib/inets/src/http_server/httpd_script_env.erl +++ b/lib/inets/src/http_server/httpd_script_env.erl @@ -111,37 +111,43 @@ create_basic_elements(cgi, ModData) -> {"SCRIPT_NAME", which_request_uri(ModData)}]. create_http_header_elements(ScriptType, Headers) -> - create_http_header_elements(ScriptType, Headers, []). + create_http_header_elements(ScriptType, Headers, [], []). -create_http_header_elements(_, [], Acc) -> +create_http_header_elements(esi, [], Acc, OtherAcc) -> + [{http_other, OtherAcc} | Acc]; +create_http_header_elements(_, [], Acc, _OtherAcc) -> Acc; create_http_header_elements(ScriptType, [{Name, [Value | _] = Values } | - Headers], Acc) + Headers], Acc, OtherAcc) when is_list(Value) -> - NewName = lists:map(fun(X) -> if X == $- -> $_; true -> X end end, Name), - try http_env_element(ScriptType, NewName, multi_value(Values)) of + try http_env_element(ScriptType, Name, multi_value(Values)) of Element -> - create_http_header_elements(ScriptType, Headers, [Element | Acc]) + create_http_header_elements(ScriptType, Headers, [Element | Acc], + OtherAcc) catch _:_ -> - create_http_header_elements(ScriptType, Headers, Acc) + create_http_header_elements(ScriptType, Headers, Acc, + [{Name, Values} | OtherAcc]) end; -create_http_header_elements(ScriptType, [{Name, Value} | Headers], Acc) +create_http_header_elements(ScriptType, [{Name, Value} | Headers], Acc, OtherAcc) when is_list(Value) -> - NewName = re:replace(Name,"-","_", [{return,list}, global]), - try http_env_element(ScriptType, NewName, Value) of + try http_env_element(ScriptType, Name, Value) of Element -> - create_http_header_elements(ScriptType, Headers, [Element | Acc]) + create_http_header_elements(ScriptType, Headers, [Element | Acc], + OtherAcc) catch _:_ -> - create_http_header_elements(ScriptType, Headers, Acc) + create_http_header_elements(ScriptType, Headers, Acc, + [{Name, Value} | OtherAcc]) end. -http_env_element(cgi, VarName, Value) -> +http_env_element(cgi, VarName0, Value) -> + VarName = re:replace(VarName0,"-","_", [{return,list}, global]), {"HTTP_"++ http_util:to_upper(VarName), Value}; -http_env_element(esi, VarName, Value) -> +http_env_element(esi, VarName0, Value) -> + list_to_existing_atom(VarName0), + VarName = re:replace(VarName0,"-","_", [{return,list}, global]), HeaderName = http_util:to_lower(VarName), - list_to_existing_atom(HeaderName), {list_to_atom("http_"++ HeaderName), Value}. multi_value([]) -> |