def handlePacket_YQ(self, ad, data):
        # Sync Request

        (kind, nb_ipp, hop, flags, src_ipp, sesid
         ) = self.decodePacket('!2s6sBB6s4s', data)

        osm = self.main.osm
        if not (osm and osm.syncd):
            raise BadTimingError("Not ready to handle a sync request")

        # Hidden nodes shouldn't be getting sync requests.
        if self.main.hide_node:
            raise BadTimingError("Hidden node can't handle sync requests.")

        self.checkSource(nb_ipp, ad, exempt_ip=True)

        src_ad = Ad().setRawIPPort(src_ipp)
        if not src_ad.auth('sbx', self.main):
            raise BadPacketError("Invalid source IP")

        timedout = bool(flags & TIMEDOUT_BIT)

        if not 0 <= hop <= 2:
            raise BadPacketError("Bad hop count")

        elif hop == 2 and src_ipp != nb_ipp:
            raise BadPacketError("Source ip mismatch")

        # Decrease hop count, and call handler
        osm.yqrm.receivedSyncRequest(nb_ipp, src_ipp, sesid, hop, timedout)