aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_c2s.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r--src/ejabberd_c2s.erl17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index fd2655632..e6a7f9c39 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -176,10 +176,9 @@ open_session(#{user := U, server := S, resource := R,
change_shaper(State),
Conn = get_conn_type(State),
State1 = State#{conn => Conn, resource => R, jid => JID},
- Prio = try maps:get(pres_last, State) of
+ Prio = case maps:get(pres_last, State, undefined) of
+ undefined -> undefined;
Pres -> get_priority_from_presence(Pres)
- catch _:{badkey, _} ->
- undefined
end,
Info = [{ip, IP}, {conn, Conn}, {auth_module, AuthModule}],
ejabberd_sm:open_session(SID, U, S, R, Prio, Info),
@@ -211,10 +210,9 @@ process_info(#{lserver := LServer} = State,
State1
end;
process_info(State, force_update_presence) ->
- try maps:get(pres_last, State) of
+ case maps:get(pres_last, State, error) of
+ error -> State;
Pres -> process_self_presence(State, Pres)
- catch _:{badkey, _} ->
- State
end;
process_info(State, Info) ->
?WARNING_MSG("got unexpected info: ~p", [Info]),
@@ -498,10 +496,11 @@ init([State, Opts]) ->
ejabberd_hooks:run_fold(c2s_init, {ok, State1}, [Opts]).
handle_call(get_presence, From, #{jid := JID} = State) ->
- Pres = try maps:get(pres_last, State)
- catch _:{badkey, _} ->
+ Pres = case maps:get(pres_last, State, error) of
+ error ->
BareJID = jid:remove_resource(JID),
- #presence{from = JID, to = BareJID, type = unavailable}
+ #presence{from = JID, to = BareJID, type = unavailable};
+ P -> P
end,
reply(From, Pres),
State;