Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
No build reason found for SLE-Manager-Tools:aarch64
home:Ledest:erlang:23
erlang
1213-fix-6074.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 1213-fix-6074.patch of Package erlang
From 436fc1f7d5504fc8fe081eb910971e7f5e746669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Min=C4=91ek?= <marko.mindek@invariant.hr> Date: Sun, 19 Feb 2023 17:03:54 +0100 Subject: [PATCH 1/2] fix 6074 Fixed functionallity of re_write property. Previous code coudn't work because there was "^"++FakeName line, but FakeName could be MatchPattern so this would fail. I changed the behaviour to append "^" while storeing the re_write, alias or script_alias proplist. Also, I included one simple re_write property into test, to make sure everything works correcty. --- lib/inets/src/http_server/mod_alias.erl | 23 ++++++++++++++--------- lib/inets/test/httpd_SUITE.erl | 3 ++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/inets/src/http_server/mod_alias.erl b/lib/inets/src/http_server/mod_alias.erl index e1264deb10..b310a7c909 100644 --- a/lib/inets/src/http_server/mod_alias.erl +++ b/lib/inets/src/http_server/mod_alias.erl @@ -123,8 +123,7 @@ real_name(ConfigDB, RequestURI, [{MP,Replacement}| _] = Aliases) real_name(ConfigDB, RequestURI, [{_,_}|_] = Aliases) -> case longest_match(Aliases, RequestURI) of {match, {FakeName, RealName}} -> - ActualName = re:replace(RequestURI, - "^" ++ FakeName, RealName, [{return,list}]), + ActualName = re:replace(RequestURI, FakeName, RealName, [{return,list}]), {ShortPath, _AfterPath} = httpd_util:split_path(ActualName), {Path, AfterPath} = httpd_util:split_path(default_index(ConfigDB, ActualName)), @@ -137,7 +136,7 @@ longest_match(Aliases, RequestURI) -> longest_match(Aliases, RequestURI, _LongestNo = 0, _LongestAlias = undefined). longest_match([{FakeName, RealName} | Rest], RequestURI, LongestNo, LongestAlias) -> - case re:run(RequestURI, "^" ++ FakeName, [{capture, first}]) of + case re:run(RequestURI, FakeName, [{capture, first}]) of {match, [{_, Length}]} -> if Length > LongestNo -> @@ -158,10 +157,10 @@ longest_match([], _RequestURI, _LongestNo, LongestAlias) -> real_script_name(_ConfigDB, _RequestURI, []) -> not_a_script; real_script_name(ConfigDB, RequestURI, [{FakeName,RealName} | Rest]) -> - case re:run(RequestURI, "^" ++ FakeName, [{capture, none}]) of + case re:run(RequestURI, FakeName, [{capture, none}]) of match -> ActualName0 = - re:replace(RequestURI, "^" ++ FakeName, RealName, [{return,list}]), + re:replace(RequestURI, FakeName, RealName, [{return,list}]), ActualName = abs_script_path(ConfigDB, ActualName0), httpd_util:split_script_path(default_index(ConfigDB, ActualName)); nomatch -> @@ -234,14 +233,17 @@ store({directory_index, Value} = Conf, _) when is_list(Value) -> end; store({directory_index, Value}, _) -> {error, {wrong_type, {directory_index, Value}}}; -store({alias, {Fake, Real}} = Conf, _) +store({alias, {Fake, Real}}, _) when is_list(Fake), is_list(Real) -> + {ok, {alias,{"^"++Fake,Real}}}; +store({alias, {MP, _}} = Conf, _) + when element(1, MP) =:= re_pattern -> {ok, Conf}; store({alias, Value}, _) -> {error, {wrong_type, {alias, Value}}}; store({re_write, {Re, Replacement}} = Conf, _) when is_list(Re), is_list(Replacement) -> - case re:compile(Re) of + case re:compile("^"++Re) of {ok, MP} -> {ok, {alias, {MP, Replacement}}}; {error,_} -> @@ -249,14 +251,17 @@ store({re_write, {Re, Replacement}} = Conf, _) end; store({re_write, _} = Conf, _) -> {error, {wrong_type, Conf}}; -store({script_alias, {Fake, Real}} = Conf, _) +store({script_alias, {Fake, Real}}, _) when is_list(Fake), is_list(Real) -> + {ok, {script_alias,{"^"++Fake,Real}}}; +store({script_alias, {MP, _}} = Conf, _) + when element(1, MP) =:= re_pattern -> {ok, Conf}; store({script_alias, Value}, _) -> {error, {wrong_type, {script_alias, Value}}}; store({script_re_write, {Re, Replacement}} = Conf, _) when is_list(Re), is_list(Replacement) -> - case re:compile(Re) of + case re:compile("^"++Re) of {ok, MP} -> {ok, {script_alias, {MP, Replacement}}}; {error,_} -> diff --git a/lib/inets/test/httpd_SUITE.erl b/lib/inets/test/httpd_SUITE.erl index df628257ec..0cd31427e0 100644 --- a/lib/inets/test/httpd_SUITE.erl +++ b/lib/inets/test/httpd_SUITE.erl @@ -1151,6 +1151,7 @@ alias() -> alias(Config) when is_list(Config) -> TestURIs200 = [ {"GET /pics/icon.sheet.gif ", 200, "image/gif"}, + {"GET /pictures/icon.sheet.gif ", 200, "image/gif"}, {"GET / ", 200, "text/html"}, {"GET /misc/ ", 200, "text/html"} ], @@ -2160,7 +2161,7 @@ config_template(Config, ServerRoot, ScriptPath, Modules) -> {mime_types, [{"html","text/html"},{"htm","text/html"}, {"shtml","text/html"}, {"gif", "image/gif"}]}, {alias, {"/icons/", filename:join(ServerRoot,"icons") ++ "/"}}, - {alias, {"/pics/", filename:join(ServerRoot,"icons") ++ "/"}}, + {re_write, {"/pic(ture)?s/", filename:join(ServerRoot,"icons") ++ "/"}}, {script_alias, {"/cgi-bin/", ScriptPath}}, {script_alias, {"/htbin/", ScriptPath}}, {erl_script_alias, {"/cgi-bin/erl", Modules}} -- 2.35.3
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