summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Fritz <fritzy@netflint.net>2010-01-20 01:42:53 -0800
committerNathan Fritz <fritzy@netflint.net>2010-01-20 01:42:53 -0800
commit6b130eb94775da8675750a0a9aed75fa6f328137 (patch)
treede4a1f3149d4f4f45ebd93ecc7597895b29e8e00
parent986255eefc890263f7a326c53d3094fd5858272a (diff)
downloadslixmpp-6b130eb94775da8675750a0a9aed75fa6f328137.tar.gz
slixmpp-6b130eb94775da8675750a0a9aed75fa6f328137.tar.bz2
slixmpp-6b130eb94775da8675750a0a9aed75fa6f328137.tar.xz
slixmpp-6b130eb94775da8675750a0a9aed75fa6f328137.zip
unhandled iq's should only respond to errors when type=get/set
-rw-r--r--sleekxmpp/plugins/xep_0045.py7
-rw-r--r--sleekxmpp/stanza/iq.py9
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'