示例#1
0
    def handle(self, connection_id, message_content):
        ack = NetworkAcknowledgement()
        ack.status = ack.OK
        block_response_message = GossipBlockResponse()
        block_response_message.ParseFromString(message_content)

        return HandlerResult(HandlerStatus.RETURN_AND_PASS,
                             message_out=ack,
                             message_type=validator_pb2.Message.NETWORK_ACK)
示例#2
0
def gossip_block_response_preprocessor(message_content_bytes):
    block_response = GossipBlockResponse()
    block_response.ParseFromString(message_content_bytes)
    block = Block()
    block.ParseFromString(block_response.content)

    content = block, message_content_bytes

    return PreprocessorResult(content=content)
    def handle(self, connection_id, message_content):
        block_response_message = GossipBlockResponse()
        block_response_message.ParseFromString(message_content)

        block = Block()
        block.ParseFromString(block_response_message.content)
        if not is_valid_block(block):
            LOGGER.debug("requested block's batches structure is invalid: %s",
                         block.header_signature)
            return HandlerResult(status=HandlerStatus.DROP)

        return HandlerResult(status=HandlerStatus.PASS)
示例#4
0
    def handle(self, connection_id, message_content):
        block_response_message = GossipBlockResponse()
        block_response_message.ParseFromString(message_content)

        block = Block()
        block.ParseFromString(block_response_message.content)
        status = validate_block(block)

        if status is True:
            LOGGER.debug("requested block passes signature verification %s",
                         block.header_signature)
            return HandlerResult(status=HandlerStatus.PASS)
        else:
            LOGGER.debug("requested block's signature is invalid: %s",
                         block.header_signature)
            return HandlerResult(status=HandlerStatus.DROP)
    def handle(self, connection_id, message_content):
        block_response_message = GossipBlockResponse()
        block_response_message.ParseFromString(message_content)
        block = Block()
        block.ParseFromString(block_response_message.content)
        if block.header_signature in self._seen_cache:
            self.block_dropped_count.inc()
            return HandlerResult(status=HandlerStatus.DROP)

        if not is_valid_block(block):
            LOGGER.debug("requested block's signature is invalid: %s",
                         block.header_signature)
            return HandlerResult(status=HandlerStatus.DROP)

        self._seen_cache = TimedCache()
        return HandlerResult(status=HandlerStatus.PASS)
示例#6
0
    def handle(self, connection_id, message_content):
        block_response_message = GossipBlockResponse()
        block_response_message.ParseFromString(message_content)
        block = Block()
        block.ParseFromString(block_response_message.content)

        block_id = block.header_signature

        if not self._has_open_requests(block_id) and self._has_block(block_id):
            LOGGER.debug('Drop duplicate block: %s', block_id)
            return HandlerResult(HandlerStatus.RETURN)

        ack = NetworkAcknowledgement()
        ack.status = ack.OK

        return HandlerResult(HandlerStatus.RETURN_AND_PASS,
                             message_out=ack,
                             message_type=validator_pb2.Message.NETWORK_ACK)