From 6b130eb94775da8675750a0a9aed75fa6f328137 Mon Sep 17 00:00:00 2001 From: Nathan Fritz Date: Wed, 20 Jan 2010 01:42:53 -0800 Subject: [PATCH] unhandled iq's should only respond to errors when type=get/set --- sleekxmpp/plugins/xep_0045.py | 7 +++++-- sleekxmpp/stanza/iq.py | 9 +++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/sleekxmpp/plugins/xep_0045.py b/sleekxmpp/plugins/xep_0045.py index 4b181f99..82737421 100644 --- a/sleekxmpp/plugins/xep_0045.py +++ b/sleekxmpp/plugins/xep_0045.py @@ -223,12 +223,15 @@ class xep_0045(base.base_plugin): return False return True - def setAffiliation(self, room, jid, affiliation='member'): + def setAffiliation(self, room, jid=None, nick=None, affiliation='member'): """ Change room affiliation.""" if affiliation not in ('outcast', 'member', 'admin', 'owner', 'none'): raise TypeError query = ET.Element('{http://jabber.org/protocol/muc#admin}query') - item = ET.Element('item', {'affiliation':affiliation, 'jid':jid}) + if nick is not None: + item = ET.Element('item', {'affiliation':affiliation, 'nick':nick}) + else: + item = ET.Element('item', {'affiliation':affiliation, 'jid':jid}) query.append(item) iq = self.xmpp.makeIqSet(query) iq['to'] = room diff --git a/sleekxmpp/stanza/iq.py b/sleekxmpp/stanza/iq.py index e3eccfdc..85165e1c 100644 --- a/sleekxmpp/stanza/iq.py +++ b/sleekxmpp/stanza/iq.py @@ -20,10 +20,11 @@ class Iq(RootStanza): self['id'] = '0' def unhandled(self): - self.reply() - self['error']['condition'] = 'feature-not-implemented' - self['error']['text'] = 'No handlers registered for this request.' - self.send() + if self['type'] in ('get', 'set'): + self.reply() + self['error']['condition'] = 'feature-not-implemented' + self['error']['text'] = 'No handlers registered for this request.' + self.send() def result(self): self['type'] = 'result'