25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-22 16:20:52 +01:00

Fix crash in mod_http_fileserver when logging URL with query elements (#2021)

This commit is contained in:
Badlop 2017-10-02 15:36:38 +02:00
parent 668d45cbc7
commit 280aa2f1b0

View File

@ -424,8 +424,7 @@ add_to_log(File, FileSize, Code, Request) ->
{{Year, Month, Day}, {Hour, Minute, Second}} = calendar:local_time(), {{Year, Month, Day}, {Hour, Minute, Second}} = calendar:local_time(),
IP = ip_to_string(element(1, Request#request.ip)), IP = ip_to_string(element(1, Request#request.ip)),
Path = join(Request#request.path, "/"), Path = join(Request#request.path, "/"),
Query = case join(lists:map(fun(E) -> lists:concat([element(1, E), "=", binary_to_list(element(2, E))]) end, Query = case stringify_query(Request#request.q) of
Request#request.q), "&") of
[] -> [] ->
""; "";
String -> String ->
@ -445,6 +444,13 @@ add_to_log(File, FileSize, Code, Request) ->
[IP, Day, Month, Year, Hour, Minute, Second, Request#request.method, Path, Query, Code, [IP, Day, Month, Year, Hour, Minute, Second, Request#request.method, Path, Query, Code,
FileSize, Referer, UserAgent]). FileSize, Referer, UserAgent]).
stringify_query(Q) ->
join(
lists:map(fun(E) ->
lists:concat([binary_to_list(element(1, E)), "=", binary_to_list(element(2, E))])
end, Q),
"&").
find_header(Header, Headers, Default) -> find_header(Header, Headers, Default) ->
case lists:keysearch(Header, 1, Headers) of case lists:keysearch(Header, 1, Headers) of
{value, {_, Value}} -> Value; {value, {_, Value}} -> Value;