def receive_empty(self, message):
        """

        :type message: Message
        :param message:
        :rtype : Transaction
        """
        logger.debug("receive_empty - " + str(message))
        try:
            host, port = message.source
        except __HOLE__:
            return
        key_mid = hash(str(host) + str(port) + str(message.mid))
        key_mid_multicast = hash(str(defines.ALL_COAP_NODES) + str(port) + str(message.mid))
        key_token = hash(str(host) + str(port) + str(message.token))
        key_token_multicast = hash(str(defines.ALL_COAP_NODES) + str(port) + str(message.token))
        if key_mid in self._transactions.keys():
            transaction = self._transactions[key_mid]
        elif key_token in self._transactions_token:
            transaction = self._transactions_token[key_token]
        elif key_mid_multicast in self._transactions.keys():
            transaction = self._transactions[key_mid_multicast]
        elif key_token_multicast in self._transactions_token:
            transaction = self._transactions_token[key_token_multicast]
        else:
            logger.warning("Un-Matched incoming empty message " + str(host) + ":" + str(port))
            return None

        if message.type == defines.Types["ACK"]:
            if not transaction.request.acknowledged:
                transaction.request.acknowledged = True
            elif not transaction.response.acknowledged:
                transaction.response.acknowledged = True
        elif message.type == defines.Types["RST"]:
            if not transaction.request.acknowledged:
                transaction.request.rejected = True
            elif not transaction.response.acknowledged:
                transaction.response.rejected = True

        if transaction.retransmit_stop is not None:
            transaction.retransmit_stop.set()

        return transaction
dataset/ETHPy150Open Tanganelli/CoAPthon/coapthon/layers/messagelayer.py/MessageLayer.receive_empty