Mercurial > libervia-pubsub
diff idavoll/pubsub.py @ 47:31eb00734cc5
Check for malformed unsubscribe request.
author | Ralph Meijer <ralphm@ik.nu> |
---|---|
date | Wed, 03 Nov 2004 15:55:13 +0000 |
parents | c9ddca3cce20 |
children | 671ead538758 |
line wrap: on
line diff
--- a/idavoll/pubsub.py Wed Nov 03 14:06:08 2004 +0000 +++ b/idavoll/pubsub.py Wed Nov 03 15:55:13 2004 +0000 @@ -33,6 +33,9 @@ class NotImplemented(Error): stanza_error = 'feature-not-implemented' +class BadRequest(Error): + stanza_error = 'bad-request' + class OptionsUnavailable(Error): stanza_error = 'feature-not-implemented' pubsub_error = 'subscription-options-unavailable' @@ -49,6 +52,8 @@ stanza_error = 'not-acceptable' pubsub_error = 'node-not-configurable' + + error_map = { backend.NotAuthorized: ('not-authorized', None), backend.NodeNotFound: ('item-not-found', None), @@ -219,8 +224,13 @@ self.handler_wrapper(self._onUnsubscribe, iq) def _onUnsubscribe(self, iq): - node_id = iq.pubsub.unsubscribe["node"] - subscriber = jid.JID(iq.pubsub.unsubscribe["jid"]) + try: + node_id = iq.pubsub.unsubscribe["node"] + jid = iq.pubsub.unsubscribe["jid"] + except KeyError: + raise BadRequest + + subscriber = jid.JID(jid) requestor = jid.JID(iq["from"]).userhostJID() return self.backend.unsubscribe(node_id, subscriber, requestor)