diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index a89440080..b894ee6b7 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -2325,8 +2325,15 @@ roster_change(IJID, ISubscription, StateData) -> update_priority(Priority, Packet, StateData) -> - Info = [{ip, StateData#state.ip}, {conn, StateData#state.conn}, - {auth_module, StateData#state.auth_module}], + Info1 = [{ip, StateData#state.ip}, {conn, StateData#state.conn}, + {auth_module, StateData#state.auth_module}], + Info = + case StateData#state.reception of + false -> + [{oor, true} | Info1]; + _ -> + Info1 + end, ejabberd_sm:set_presence(StateData#state.sid, StateData#state.user, StateData#state.server, @@ -2597,10 +2604,8 @@ change_reception(#state{reception = true} = StateData, false) -> [{xmlelement, "show", [], [{xmlcdata, StateData#state.oor_show}]}, {xmlelement, "status", [], - [{xmlcdata, StateData#state.oor_status}]}, - {xmlelement, "priority", [], - [{xmlcdata, "0"}]}]}, - update_priority(0, Packet, StateData), + [{xmlcdata, StateData#state.oor_status}]}]}, + update_priority(0, Packet, StateData#state{reception = false}), presence_broadcast_to_trusted( StateData, StateData#state.jid, @@ -2632,7 +2637,8 @@ change_reception(#state{reception = false} = StateData, true) -> _ -> Packet = StateData#state.pres_last, NewPriority = get_priority_from_presence(Packet), - update_priority(NewPriority, Packet, StateData), + update_priority(NewPriority, Packet, + StateData#state{reception = true}), presence_broadcast_to_trusted( StateData, StateData#state.jid,