diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ejabberd_c2s.erl | 8 | ||||
| -rw-r--r-- | src/mod_roster.erl | 7 | 
2 files changed, 10 insertions, 5 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 8d2e6e39f..59b886482 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -226,7 +226,7 @@ broadcast(FsmRef, Type, From, Packet) ->  get_state(FsmRef) ->      ?GEN_FSM:sync_send_all_state_event(FsmRef, get_state, 1000). -add_rosteritem(FsmRef, IJID, ISubscription) -> +add_rosteritem(FsmRef, IJID, ISubscription) when is_binary(ISubscription) ->      ?GEN_FSM:send_all_state_event(FsmRef, {add_rosteritem, IJID, ISubscription}).  del_rosteritem(FsmRef, IJID) -> @@ -1146,7 +1146,7 @@ handle_event({add_rosteritem, IJID, ISubscription}, StateName, StateData) ->      fsm_next_state(StateName, NewStateData);  handle_event({del_rosteritem, IJID}, StateName, StateData) -> -    NewStateData = roster_change(IJID, none, StateData), +    NewStateData = roster_change(IJID, <<"none">>, StateData),      fsm_next_state(StateName, NewStateData);  handle_event(_Event, StateName, StateData) -> @@ -1956,8 +1956,8 @@ remove_element(E, Set) ->  roster_change(IJID, ISubscription, StateData) ->      LIJID = jlib:short_prepd_jid(IJID), -    IsFrom = (ISubscription == both) or (ISubscription == from), -    IsTo   = (ISubscription == both) or (ISubscription == to), +    IsFrom = (ISubscription == <<"both">>) or (ISubscription == <<"from">>), +    IsTo   = (ISubscription == <<"both">>) or (ISubscription == <<"to">>),      OldIsFrom = ?SETS:is_element(LIJID, StateData#state.pres_f),      FSet = if  	       IsFrom -> diff --git a/src/mod_roster.erl b/src/mod_roster.erl index feb9a2f2e..fe2738bc6 100644 --- a/src/mod_roster.erl +++ b/src/mod_roster.erl @@ -627,7 +627,12 @@ process_item_els(Item, []) ->  push_item(User, Server, From, Item)    when is_binary(User), is_binary(Server), ?IS_JID(From) -> -    {U, S, R} = Item#roster.jid, +    {U, S, R2} = Item#roster.jid, +    %% the ?XMLATTR macro will convert 'undefined' to <<"undefined">> .. so here we use <<>> for bare jids. +    R = case R2 of  +        undefined -> <<>>; +        _ -> R2 +    end,      ejabberd_sm:route(exmpp_jid:make(),  		      exmpp_jid:make(User, Server),  		      #xmlel{name = 'broadcast', ns = roster_item, attrs =  | 
