def receivedSyncReply(self, src_ipp, c_nbs, u_nbs):

        my_ipp = self.main.osm.me.ipp

        # Loop through all the nodes that were just contacted by proxy
        for ipp in c_nbs:
            if ipp == my_ipp:
                continue
            try:
                s = self.info[ipp]
            except KeyError:
                # Haven't seen this one before, set a timeout because
                # we should be hearing a reply.
                s = self.info[ipp] = self.SyncInfo(ipp)
                self.scheduleSyncTimeout(s, proxy=True)
                self.updateStats(s, 0, +1)
            else:
                if ipp in self.uncontacted:
                    # Seen this node, had planned to ping it later.
                    # Pretend like we just pinged it now.
                    self.uncontacted.discard(ipp)
                    self.scheduleSyncTimeout(s, proxy=True)

        # Loop through all the nodes which weren't contacted by this
        # host, but that the host is neighbors with.
        for ipp in u_nbs:
            if ipp == my_ipp:
                continue
            if ipp not in self.info:
                # If we haven't heard of this node before, create some
                # info and plan on pinging it later
                s = self.info[ipp] = self.SyncInfo(ipp)

                self.uncontacted.add(ipp)
                self.updateStats(s, 0, +1)

                self.advanceQueue()

        # Mark off that we've received a reply.
        try:
            s = self.info[src_ipp]
        except KeyError:
            s = self.info[src_ipp] = self.SyncInfo(src_ipp)

        # Keep track of NAT stats
        if s.proxy_request:
            s.proxy_request = False

            if s.fail_limit == 2:
                self.proxy_success += 1
            elif s.fail_limit == 1:
                self.proxy_failed += 1

            if (self.proxy_failed + self.proxy_success >= 10 and
                    self.proxy_failed > self.proxy_success):
                self.main.needPortForward()
                return

        self.uncontacted.discard(src_ipp)

        self.updateStats(s, +1, +1)
        self.showProgress()

        self.cancelSyncTimeout(s)