def receivedRejection(self, ack_key, ipp):
        # Broadcast rejection, sent in response to a previous broadcast if
        # another node doesn't recognize us on the network.

        # We attach a status_pktnum to any broadcast which could possibly
        # be rejected.  If this matches my status_pktnum now, then we should
        # broadcast a new status, which will change status_pktnum and
        # prevent this same broadcast from triggering another status update.

        osm = self.main.osm

        try:
            m = self.msgs[ack_key]
        except KeyError:
            raise BadTimingError("Reject refers to an unknown broadcast")

        if m is self.rcollide_last_NS:
            # Remote nick collision might have occurred

            self.rcollide_ipps.add(ipp)

            if len(self.rcollide_ipps) > 1:
                # Multiple nodes have reported a problem, so tell the user.
                dch = self.main.getOnlineDCH()
                if dch:
                    dch.remoteNickCollision()

                # No more reports until next time
                self.rcollide_last_NS = None
                self.rcollide_ipps.clear()

        if osm.me.status_pktnum == m.status_pktnum:
            # One of my hash-containing broadcasts has been rejected, so
            # send my full status to refresh everyone.
            # (Note: m.status_pktnum is None for irrelevant messages.)
            osm.sendMyStatus()