diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index 4b93ffd01..12192a388 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -2765,6 +2765,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, con.RegisterHandler('iq', self._PrivacySetCB, 'set', common.xmpp.NS_PRIVACY) con.RegisterHandler('iq', self._PubSubCB, 'result') + con.RegisterHandler('iq', self._PubSubErrorCB, 'error') con.RegisterHandler('iq', self._ErrorCB, 'error') con.RegisterHandler('iq', self._IqCB) con.RegisterHandler('iq', self._StanzaArrivedCB) diff --git a/src/common/pubsub.py b/src/common/pubsub.py index 354d6f97e..d253d548e 100644 --- a/src/common/pubsub.py +++ b/src/common/pubsub.py @@ -166,6 +166,18 @@ class ConnectionPubSub: if ns == 'storage:bookmarks': self._parse_bookmarks(storage, 'pubsub') + def _PubSubErrorCB(self, conn, stanza): + gajim.log.debug('_PubsubErrorCB') + pubsub = stanza.getTag('pubsub') + if not pubsub: + return + items = pubsub.getTag('items') + if not items: + return + if items.getAttr('node') == 'storage:bookmarks': + # Receiving bookmarks from pubsub failed, so take them from xml + self.get_bookmarks(storage_type='xml') + def request_pb_configuration(self, jid, node): if not self.connection or self.connected < 2: return