From 011cf55eb569046ece4383d0f4710c0f9183988d Mon Sep 17 00:00:00 2001 From: Badlop Date: Fri, 21 Dec 2018 14:46:54 +0100 Subject: [PATCH] Handle persist=false in roster items (#2722) --- src/prosody2ejabberd.erl | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/prosody2ejabberd.erl b/src/prosody2ejabberd.erl index e9b77e8e3..663d01f69 100644 --- a/src/prosody2ejabberd.erl +++ b/src/prosody2ejabberd.erl @@ -307,22 +307,24 @@ convert_roster_item(LUser, LServer, JIDstring, LuaList) -> InitR = #roster{usj = {LUser, LServer, LJID}, us = {LUser, LServer}, jid = LJID}, - Roster = - lists:foldl( - fun({<<"groups">>, Val}, R) -> + lists:foldl( + fun({<<"groups">>, Val}, [R]) -> Gs = lists:flatmap( fun({G, true}) -> [G]; (_) -> [] end, Val), - R#roster{groups = Gs}; - ({<<"subscription">>, Sub}, R) -> - R#roster{subscription = misc:binary_to_atom(Sub)}; - ({<<"ask">>, <<"subscribe">>}, R) -> - R#roster{ask = out}; - ({<<"name">>, Name}, R) -> - R#roster{name = Name} - end, InitR, LuaList), - [Roster] + [R#roster{groups = Gs}]; + ({<<"subscription">>, Sub}, [R]) -> + [R#roster{subscription = misc:binary_to_atom(Sub)}]; + ({<<"ask">>, <<"subscribe">>}, [R]) -> + [R#roster{ask = out}]; + ({<<"name">>, Name}, [R]) -> + [R#roster{name = Name}]; + ({<<"persist">>, false}, _) -> + []; + (_, []) -> + [] + end, [InitR], LuaList) catch _:{bad_jid, _} -> [] end.