def advanceQueue(self):

        # Raise request limit the first time it fills up
        if self.request_limit < 5 and self.waitcount >= 5:
            self.request_limit = 5

        while self.waitcount < self.request_limit:

            try:
                # Grab an arbitrary (semi-pseudorandom) uncontacted node.
                ipp = self.uncontacted.pop()
            except KeyError:
                # Ran out of nodes; see if we're done yet.
                if self.waitcount == 0:
                    dcall_discard(self, 'showProgress_dcall')
                    self.main.osm.syncComplete()
                return

            s = self.info[ipp]

            osm = self.main.osm
            ph = self.main.ph

            hops = 2
            flags = (s.fail_limit < 2) and TIMEDOUT_BIT

            # Send the sync request
            packet = osm.mrm.broadcastHeader('YQ', osm.me.ipp, hops, flags)
            packet.append(osm.me.sesid)

            ad = Ad().setRawIPPort(s.ipp)
            ph.sendPacket(''.join(packet), ad.getAddrTuple())

            self.scheduleSyncTimeout(s)