Changeset 8381

Show
Ignore:
Timestamp:
07/11/07 00:52:19 (17 months ago)
Author:
asterix
Message:

prevent loop is pubsub disco (even if server answer looks strange) fixes #3292

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/disco.py

    r8373 r8381  
    18381838                        self._add_item(jid, node, item, force) 
    18391839 
     1840        def _in_list_foreach(self, model, path, iter, node): 
     1841                if model[path][1] == node: 
     1842                        self.in_list = True 
     1843 
     1844        def _in_list(self, node): 
     1845                self.in_list = False 
     1846                self.model.foreach(self._in_list_foreach, node) 
     1847                return self.in_list 
     1848 
    18401849        def _add_item(self, jid, node, item, force): 
    18411850                ''' Called when we got basic information about new node from query. 
     
    18591868                        parent_iter = self._get_child_iter(parent_iter, parent_node) 
    18601869                        node_splitted[0] = parent_node + '/' + node_splitted[0] 
    1861                 self.model.append(parent_iter, (jid, node, name, dunno, subscribed)) 
    1862                 self.cache.get_items(jid, node, self._add_items, force = force, 
    1863                         args = (force,)) 
     1870                if not self._in_list(node): 
     1871                        self.model.append(parent_iter, (jid, node, name, dunno, subscribed)) 
     1872                        self.cache.get_items(jid, node, self._add_items, force = force, 
     1873                                args = (force,)) 
    18641874 
    18651875        def _get_child_iter(self, parent_iter, node):