From: Alexey Shchepin Date: Thu, 3 May 2007 15:45:24 +0000 (+0000) Subject: * src/ejabberd_sm.erl: Added set_presence_hook X-Git-Tag: v2.0.0~388 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=372944df6c495df219749870c2e8f57b62bbf21d;p=ejabberd * src/ejabberd_sm.erl: Added set_presence_hook * src/ejabberd_c2s.erl: Likewise SVN Revision: 761 --- diff --git a/ChangeLog b/ChangeLog index 0f23f225a..28f05c851 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2007-05-03 Alexey Shchepin * src/ejabberd_sm.erl: Added set_presence_hook + * src/ejabberd_c2s.erl: Likewise * src/ejabberd_sm.erl: Added check for existence of incoming subscription destination diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index bf4a3ac05..98232cf09 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -1362,7 +1362,7 @@ presence_update(From, Packet, StateData) -> get_priority_from_presence(OldPresence) end, NewPriority = get_priority_from_presence(Packet), - update_priority(NewPriority, StateData), + update_priority(NewPriority, Packet, StateData), FromUnavail = (StateData#state.pres_last == undefined) or StateData#state.pres_invis, ?DEBUG("from unavail = ~p~n", [FromUnavail]), @@ -1641,12 +1641,13 @@ roster_change(IJID, ISubscription, StateData) -> end. -update_priority(Pri, StateData) -> +update_priority(Priority, Packet, StateData) -> ejabberd_sm:set_presence(StateData#state.sid, StateData#state.user, StateData#state.server, StateData#state.resource, - Pri). + Priority, + Packet). get_priority_from_presence(PresencePacket) -> case xml:get_subtag(PresencePacket, "priority") of diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl index cfc1bb957..fc1706da3 100644 --- a/src/ejabberd_sm.erl +++ b/src/ejabberd_sm.erl @@ -19,7 +19,7 @@ bounce_offline_message/3, disconnect_removed_user/2, get_user_resources/2, - set_presence/5, + set_presence/6, unset_presence/5, close_session_unset_presence/5, dirty_get_sessions_list/0, @@ -110,10 +110,10 @@ get_user_resources(User, Server) -> [element(3, S#session.usr) || S <- clean_session_list(Ss)] end. -set_presence(SID, User, Server, Resource, Priority) -> +set_presence(SID, User, Server, Resource, Priority, Presence) -> set_session(SID, User, Server, Resource, Priority), ejabberd_hooks:run(set_presence_hook, jlib:nameprep(Server), - [User, Server, Resource, Priority]). + [User, Server, Resource, Presence]). unset_presence(SID, User, Server, Resource, Status) -> set_session(SID, User, Server, Resource, undefined),