diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2015-08-17 15:50:02 +0200 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2015-08-17 15:50:35 +0200 |
commit | f89db30d7740b38ce942c2e05cb6a6f16fa0812a (patch) | |
tree | ab6ebb491f971a3c908d2b3a85fda170156e362a /src | |
parent | Let ejabberdctl handle more shell metacharacters (diff) |
Catch errors when calling inet:peername in ejabberd_http
Diffstat (limited to 'src')
-rw-r--r-- | src/ejabberd_http.erl | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/ejabberd_http.erl b/src/ejabberd_http.erl index 1702e9be6..61ce64734 100644 --- a/src/ejabberd_http.erl +++ b/src/ejabberd_http.erl @@ -160,7 +160,11 @@ init({SockMod, Socket}, Opts) -> default_host = DefaultHost, options = Opts, request_handlers = RequestHandlers}, - receive_headers(State). + try receive_headers(State) of + V -> V + catch + {error, _} -> State + end. become_controller(_Pid) -> ok. @@ -427,13 +431,17 @@ process_request(#state{request_method = Method, false -> make_bad_request(State); {LPath, LQuery, Data} -> - {ok, IPHere} = + PeerName = case SockMod of gen_tcp -> inet:peername(Socket); _ -> SockMod:peername(Socket) end, + IPHere = case PeerName of + {ok, V} -> V; + {error, _} = E -> throw(E) + end, XFF = proplists:get_value('X-Forwarded-For', RequestHeaders, []), IP = analyze_ip_xff(IPHere, XFF, Host), Request = #request{method = Method, |