def handlePacket_SQ(self, ad, data):
        # Broadcast: Search Request

        osm = self.main.osm

        def check_cb(src_n, src_ipp, rest):

            (pktnum, rest
             ) = self.decodePacket("!I+", rest)

            string, rest = self.decodeString1(rest)
            if rest:
                raise BadPacketError("Extra data")

            if src_ipp == osm.me.ipp:
                raise BadBroadcast("Spoofed search")

            if not osm.syncd:
                # Not syncd, forward blindly
                return

            if src_n:
                # Looks good
                dch = self.main.getOnlineDCH()
                if dch:
                    dch.pushSearchRequest(src_ipp, string)

            else:
                # From an invalid node
                raise Reject

        self.handleBroadcast(ad, data, check_cb)