diff options
author | Waqas Hussain <waqas20@gmail.com> | 2009-11-26 13:06:52 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2009-11-26 13:06:52 +0500 |
commit | d3aa2ff4e6469edb368f272bec11dff9658faaa4 (patch) | |
tree | 92c34d551eee2a0f7b9fa8831508ce34faf1ec4d /plugins/mod_roster.lua | |
parent | b544f41cef7692b6d4672b9784637051131d03ad (diff) | |
parent | 0554c71543ee4a199b056accac6a4bc1bc26d216 (diff) | |
download | prosody-d3aa2ff4e6469edb368f272bec11dff9658faaa4.tar.gz prosody-d3aa2ff4e6469edb368f272bec11dff9658faaa4.zip |
Merge with 0.6.
Diffstat (limited to 'plugins/mod_roster.lua')
-rw-r--r-- | plugins/mod_roster.lua | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/plugins/mod_roster.lua b/plugins/mod_roster.lua index 7ca22aa1..52c61a26 100644 --- a/plugins/mod_roster.lua +++ b/plugins/mod_roster.lua @@ -74,18 +74,20 @@ module:add_iq_handler("c2s", "jabber:iq:roster", if not resource and host then if jid ~= from_node.."@"..from_host then if item.attr.subscription == "remove" then - local r_item = session.roster[jid]; + local roster = session.roster; + local r_item = roster[jid]; if r_item then + local to_bare = node and (node.."@"..host) or host; -- bare JID + if r_item.subscription == "both" or r_item.subscription == "from" or (roster.pending and roster.pending[jid]) then + core_post_stanza(session, st.presence({type="unsubscribed", from=session.full_jid, to=to_bare})); + end + if r_item.subscription == "both" or r_item.subscription == "to" or r_item.ask then + core_post_stanza(session, st.presence({type="unsubscribe", from=session.full_jid, to=to_bare})); + end local success, err_type, err_cond, err_msg = rm_remove_from_roster(session, jid); if success then session.send(st.reply(stanza)); rm_roster_push(from_node, from_host, jid); - local to_bare = node and (node.."@"..host) or host; -- bare JID - if r_item.subscription == "both" or r_item.subscription == "from" then - core_post_stanza(session, st.presence({type="unsubscribed", from=session.full_jid, to=to_bare})); - elseif r_item.subscription == "both" or r_item.subscription == "to" then - core_post_stanza(session, st.presence({type="unsubscribe", from=session.full_jid, to=to_bare})); - end else session.send(st.error_reply(stanza, err_type, err_cond, err_msg)); end |