%% {stop, Reason, Reply, State} | (terminate/2 is called)
%% {stop, Reason, State} (terminate/2 is called)
%%----------------------------------------------------------------------
-handle_call(Request, From, State) ->
+handle_call(_Request, _From, State) ->
Reply = ok,
{reply, Reply, State}.
%% {noreply, State, Timeout} |
%% {stop, Reason, State} (terminate/2 is called)
%%----------------------------------------------------------------------
-handle_cast(Msg, State) ->
+handle_cast(_Msg, State) ->
{noreply, State}.
-code_change(OldVsn, State, Extra) ->
+code_change(_OldVsn, State, _Extra) ->
{ok, State}.
%%----------------------------------------------------------------------
%% {noreply, State, Timeout} |
%% {stop, Reason, State} (terminate/2 is called)
%%----------------------------------------------------------------------
-handle_info(Info, State) ->
+handle_info(_Info, State) ->
{noreply, State}.
%%----------------------------------------------------------------------
%% Purpose: Shutdown the server
%% Returns: any (ignored by gen_server)
%%----------------------------------------------------------------------
-terminate(Reason, State) ->
+terminate(_Reason, _State) ->
ok.
%%%----------------------------------------------------------------------
check_password(User, Password, StreamID, Digest) ->
LUser = jlib:nodeprep(User),
- F = fun() ->
- case mnesia:read({passwd, LUser}) of
- [E] ->
- E#passwd.password
- end
- end,
- case mnesia:transaction(F) of
- {atomic, Passwd} ->
+ case catch mnesia:dirty_read({passwd, LUser}) of
+ [#passwd{password = Passwd}] ->
DigRes = if
Digest /= "" ->
Digest == sha:sha(StreamID ++ Passwd);
mnesia:write(#passwd{user = LUser,
password = Password}),
ok;
- [E] ->
+ [_E] ->
exists
end
end,
gen_iq_handler:add_iq_handler(ejabberd_sm, ?NS_ROSTER,
?MODULE, process_iq, IQDisc).
+-define(PSI_ROSTER_WORKAROUND, true).
+
+-ifdef(PSI_ROSTER_WORKAROUND).
+
+process_iq(From, To, IQ) ->
+ {iq, ID, _Type, XMLNS, SubEl} = IQ,
+ #jid{lserver = LServer} = From,
+ case ?MYNAME of
+ LServer ->
+ ResIQ = process_local_iq(From, To, IQ),
+ ejabberd_router:route(From, From,
+ jlib:iq_to_xml(ResIQ)),
+ ignore;
+ _ ->
+ {iq, ID, error, XMLNS,
+ [SubEl, ?ERR_ITEM_NOT_FOUND]}
+ end.
+
+-else.
+
process_iq(From, To, IQ) ->
- {iq, ID, Type, XMLNS, SubEl} = IQ,
+ {iq, ID, _Type, XMLNS, SubEl} = IQ,
#jid{lserver = LServer} = From,
case ?MYNAME of
LServer ->
[SubEl, ?ERR_ITEM_NOT_FOUND]}
end.
+-endif.
process_local_iq(From, To, {iq, _, Type, _, _} = IQ) ->
case Type of
-process_iq_get(From, To, {iq, ID, Type, XMLNS, SubEl}) ->
+process_iq_get(From, _To, {iq, ID, _Type, XMLNS, SubEl}) ->
#jid{luser = LUser} = From,
F = fun() ->
mnesia:index_read(roster, LUser, #roster.user)
{xmlelement, "item", Attrs, SubEls}.
-process_iq_set(From, To, {iq, ID, Type, XMLNS, SubEl}) ->
- {xmlelement, Name, Attrs, Els} = SubEl,
+process_iq_set(From, To, {iq, ID, _Type, XMLNS, SubEl}) ->
+ {xmlelement, _Name, _Attrs, Els} = SubEl,
lists:foreach(fun(El) -> process_item_set(From, To, El) end, Els),
{iq, ID, result, XMLNS, []}.
-process_item_set(From, To, {xmlelement, Name, Attrs, Els} = XItem) ->
+process_item_set(From, To, {xmlelement, _Name, Attrs, Els}) ->
JID1 = jlib:string_to_jid(xml:get_attr_s("jid", Attrs)),
#jid{user = User, luser = LUser} = From,
case JID1 of
ok
end
end;
-process_item_set(From, To, _) ->
+process_item_set(_From, _To, _) ->
ok.
process_item_attrs(Item, [{Attr, Val} | Attrs]) ->
end, ejabberd_sm:get_user_resources(User)).
% TODO: don't push to those who not load roster
+-ifdef(PSI_ROSTER_WORKAROUND).
+
+push_item(User, Resource, From, Item) ->
+ ResIQ = {iq, "", set, ?NS_ROSTER,
+ [{xmlelement, "query",
+ [{"xmlns", ?NS_ROSTER}],
+ [item_to_xml(Item)]}]},
+ ejabberd_router ! {route,
+ jlib:make_jid(User, ?MYNAME, Resource),
+ jlib:make_jid(User, ?MYNAME, Resource),
+ jlib:iq_to_xml(ResIQ)}.
+
+-else.
+
push_item(User, Resource, From, Item) ->
ResIQ = {iq, "", set, ?NS_ROSTER,
[{xmlelement, "query",
jlib:make_jid(User, ?MYNAME, Resource),
jlib:iq_to_xml(ResIQ)}.
+-endif.
get_subscription_lists(User) ->
LUser = jlib:nodeprep(User),
From#jid.resource},
NewItem = #roster{uj = {LUser, LFrom},
user = LUser,
- jid = From},
+ jid = JID},
mnesia:write(NewItem),
true
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
set_items(User, SubEl) ->
- {xmlelement, Name, Attrs, Els} = SubEl,
+ {xmlelement, _Name, _Attrs, Els} = SubEl,
LUser = jlib:nodeprep(User),
F = fun() ->
lists:foreach(fun(El) -> process_item_set_t(LUser, El) end, Els)
end,
mnesia:transaction(F).
-process_item_set_t(LUser, {xmlelement, Name, Attrs, Els} = XItem) ->
+process_item_set_t(LUser, {xmlelement, _Name, Attrs, Els}) ->
JID1 = jlib:string_to_jid(xml:get_attr_s("jid", Attrs)),
case JID1 of
error ->
mnesia:write(Item2)
end
end;
-process_item_set_t(LUser, _) ->
+process_item_set_t(_LUser, _) ->
ok.
process_item_attrs_ws(Item, [{Attr, Val} | Attrs]) ->