# HG changeset patch # User Ralph Meijer # Date 1099497313 0 # Node ID 31eb00734cc5ab25f7b029e2c509735d9dbeb486 # Parent 979e53b54267359716a944cd802fda40ca4534e7 Check for malformed unsubscribe request. diff -r 979e53b54267 -r 31eb00734cc5 idavoll/pubsub.py --- 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)