aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_piefxis.erl
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2021-09-22 12:11:25 +0200
committerBadlop <badlop@process-one.net>2021-09-22 15:30:11 +0200
commitceeba3eea12e4057b517efa0658d6805dad702ba (patch)
tree4f771e95dfbb799d07645032218ebeace5b19e68 /src/ejabberd_piefxis.erl
parentWhen exporting mod_mam, MUC entries are assigned to the MUC service (#3680) (diff)
Don't crash when exporting a module that is not enabled
Diffstat (limited to 'src/ejabberd_piefxis.erl')
-rw-r--r--src/ejabberd_piefxis.erl20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/ejabberd_piefxis.erl b/src/ejabberd_piefxis.erl
index 8dff06837..8d5c9101c 100644
--- a/src/ejabberd_piefxis.erl
+++ b/src/ejabberd_piefxis.erl
@@ -214,26 +214,30 @@ parse_scram_password(PassData) ->
get_vcard(User, Server) ->
LUser = jid:nodeprep(User),
LServer = jid:nameprep(Server),
- case mod_vcard:get_vcard(LUser, LServer) of
+ try mod_vcard:get_vcard(LUser, LServer) of
error -> [];
Els -> Els
+ catch
+ error:{module_not_loaded, _, _} -> []
end.
-spec get_offline(binary(), binary()) -> [xmlel()].
get_offline(User, Server) ->
LUser = jid:nodeprep(User),
LServer = jid:nameprep(Server),
- case mod_offline:get_offline_els(LUser, LServer) of
+ try mod_offline:get_offline_els(LUser, LServer) of
[] ->
[];
Els ->
NewEls = lists:map(fun xmpp:encode/1, Els),
[#xmlel{name = <<"offline-messages">>, children = NewEls}]
+ catch
+ error:{module_not_loaded, _, _} -> []
end.
-spec get_privacy(binary(), binary()) -> [xmlel()].
get_privacy(User, Server) ->
- case mod_privacy:get_user_lists(User, Server) of
+ try mod_privacy:get_user_lists(User, Server) of
{ok, #privacy{default = Default,
lists = [_|_] = Lists}} ->
XLists = lists:map(
@@ -246,12 +250,14 @@ get_privacy(User, Server) ->
[xmpp:encode(#privacy_query{default = Default, lists = XLists})];
_ ->
[]
+ catch
+ error:{module_not_loaded, _, _} -> []
end.
-spec get_roster(binary(), binary()) -> [xmlel()].
get_roster(User, Server) ->
JID = jid:make(User, Server),
- case mod_roster:get_roster(User, Server) of
+ try mod_roster:get_roster(User, Server) of
[_|_] = Items ->
Subs =
lists:flatmap(
@@ -278,15 +284,19 @@ get_roster(User, Server) ->
[xmpp:encode(#roster_query{items = Rs}) | Subs];
_ ->
[]
+ catch
+ error:{module_not_loaded, _, _} -> []
end.
-spec get_private(binary(), binary()) -> [xmlel()].
get_private(User, Server) ->
- case mod_private:get_data(User, Server) of
+ try mod_private:get_data(User, Server) of
[_|_] = Els ->
[xmpp:encode(#private{sub_els = Els})];
_ ->
[]
+ catch
+ error:{module_not_loaded, _, _} -> []
end.
process(#state{xml_stream_state = XMLStreamState, fd = Fd} = State) ->