def handlePacket_NF(self, ad, data):
        # Broadcast: Node failure

        osm = self.main.osm

        def check_cb(src_n, src_ipp, rest):

            (pktnum, sesid,
             ) = self.decodePacket('!I4s', rest)

            # Make sure this isn't about me
            if self.isMyStatus(src_ipp, pktnum, sendfull=False):
                raise BadBroadcast("I'm not dead!")

            if not (src_n and src_n.expire_dcall):
                raise BadBroadcast("Nonexistent node")

            if src_n.sesid != sesid:
                raise BadBroadcast("Wrong session ID")

            if self.isOutdatedStatus(src_n, pktnum):
                raise BadBroadcast("Outdated")

            # Reduce the expiration time.  If that node isn't actually
            # dead, it will rebroadcast a status update to correct it.
            if (dcall_timeleft(src_n.expire_dcall) > NODE_EXPIRE_EXTEND):
                osm.scheduleNodeExpire(src_n, NODE_EXPIRE_EXTEND)

        self.handleBroadcast(ad, data, check_cb)