summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--slixmpp/basexmpp.py3
-rw-r--r--slixmpp/plugins/xep_0045.py1
-rw-r--r--slixmpp/roster/single.py1
3 files changed, 5 insertions, 0 deletions
diff --git a/slixmpp/basexmpp.py b/slixmpp/basexmpp.py
index 3cc299b2..e5f5f0b1 100644
--- a/slixmpp/basexmpp.py
+++ b/slixmpp/basexmpp.py
@@ -752,6 +752,9 @@ class BaseXMPP(XMLStream):
Update the roster with presence information.
"""
+ if self.roster[presence['from']].ignore_updates:
+ return
+
if not self.is_component and not presence['to'].bare:
presence['to'] = self.boundjid
diff --git a/slixmpp/plugins/xep_0045.py b/slixmpp/plugins/xep_0045.py
index f6f48891..8ab51784 100644
--- a/slixmpp/plugins/xep_0045.py
+++ b/slixmpp/plugins/xep_0045.py
@@ -160,6 +160,7 @@ class XEP_0045(BasePlugin):
got_online = False
if pr['muc']['room'] not in self.rooms.keys():
return
+ self.xmpp.roster[pr['from']].ignore_updates = True
entry = pr['muc'].get_stanza_values()
entry['show'] = pr['show']
entry['status'] = pr['status']
diff --git a/slixmpp/roster/single.py b/slixmpp/roster/single.py
index 62fbca41..3961cddf 100644
--- a/slixmpp/roster/single.py
+++ b/slixmpp/roster/single.py
@@ -56,6 +56,7 @@ class RosterNode(object):
self.xmpp = xmpp
self.jid = jid
self.db = db
+ self.ignore_updates = False
self.auto_authorize = True
self.auto_subscribe = True
self.last_status = None