Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/mininode.py
Show All 19 Lines | |||||
import struct | import struct | ||||
import sys | import sys | ||||
import threading | import threading | ||||
from test_framework.messages import ( | from test_framework.messages import ( | ||||
CBlockHeader, | CBlockHeader, | ||||
MIN_VERSION_SUPPORTED, | MIN_VERSION_SUPPORTED, | ||||
msg_addr, | msg_addr, | ||||
msg_avapoll, | |||||
msg_avaresponse, | |||||
msg_block, | msg_block, | ||||
MSG_BLOCK, | MSG_BLOCK, | ||||
msg_blocktxn, | msg_blocktxn, | ||||
msg_cmpctblock, | msg_cmpctblock, | ||||
msg_feefilter, | msg_feefilter, | ||||
msg_getaddr, | msg_getaddr, | ||||
msg_getblocks, | msg_getblocks, | ||||
msg_getblocktxn, | msg_getblocktxn, | ||||
Show All 17 Lines | from test_framework.messages import ( | ||||
sha256, | sha256, | ||||
) | ) | ||||
from test_framework.util import wait_until | from test_framework.util import wait_until | ||||
logger = logging.getLogger("TestFramework.mininode") | logger = logging.getLogger("TestFramework.mininode") | ||||
MESSAGEMAP = { | MESSAGEMAP = { | ||||
b"addr": msg_addr, | b"addr": msg_addr, | ||||
b"avapoll": msg_avapoll, | |||||
b"avaresponse": msg_avaresponse, | |||||
b"block": msg_block, | b"block": msg_block, | ||||
b"blocktxn": msg_blocktxn, | b"blocktxn": msg_blocktxn, | ||||
b"cmpctblock": msg_cmpctblock, | b"cmpctblock": msg_cmpctblock, | ||||
b"feefilter": msg_feefilter, | b"feefilter": msg_feefilter, | ||||
b"getaddr": msg_getaddr, | b"getaddr": msg_getaddr, | ||||
b"getblocks": msg_getblocks, | b"getblocks": msg_getblocks, | ||||
b"getblocktxn": msg_getblocktxn, | b"getblocktxn": msg_getblocktxn, | ||||
b"getdata": msg_getdata, | b"getdata": msg_getdata, | ||||
▲ Show 20 Lines • Show All 134 Lines • ▼ Show 20 Lines | def _on_data(self): | ||||
msg = self.recvbuf[4 + 12 + 4 + 4:4 + 12 + 4 + 4 + msglen] | msg = self.recvbuf[4 + 12 + 4 + 4:4 + 12 + 4 + 4 + msglen] | ||||
h = sha256(sha256(msg)) | h = sha256(sha256(msg)) | ||||
if checksum != h[:4]: | if checksum != h[:4]: | ||||
raise ValueError("got bad checksum " + repr(self.recvbuf)) | raise ValueError("got bad checksum " + repr(self.recvbuf)) | ||||
self.recvbuf = self.recvbuf[4 + 12 + 4 + 4 + msglen:] | self.recvbuf = self.recvbuf[4 + 12 + 4 + 4 + msglen:] | ||||
if command not in MESSAGEMAP: | if command not in MESSAGEMAP: | ||||
raise ValueError("Received unknown command from {}:{}: '{}' {}".format( | raise ValueError("Received unknown command from {}:{}: '{}' {}".format( | ||||
self.dstaddr, self.dstport, command, repr(msg))) | self.dstaddr, self.dstport, command, repr(msg))) | ||||
if command == b'avaresponse': | |||||
print(repr(msg)) | |||||
f = BytesIO(msg) | f = BytesIO(msg) | ||||
m = MESSAGEMAP[command]() | m = MESSAGEMAP[command]() | ||||
m.deserialize(f) | m.deserialize(f) | ||||
self._log_message("receive", m) | self._log_message("receive", m) | ||||
return m | return m | ||||
except Exception as e: | except Exception as e: | ||||
logger.exception('Error reading message:', repr(e)) | logger.exception('Error reading message:', repr(e)) | ||||
raise | raise | ||||
▲ Show 20 Lines • Show All 125 Lines • ▼ Show 20 Lines | class P2PInterface(P2PConnection): | ||||
def on_open(self): | def on_open(self): | ||||
pass | pass | ||||
def on_close(self): | def on_close(self): | ||||
pass | pass | ||||
def on_addr(self, message): pass | def on_addr(self, message): pass | ||||
def on_avapoll(self, message): pass | |||||
def on_avaresponse(self, message): pass | |||||
def on_block(self, message): pass | def on_block(self, message): pass | ||||
def on_blocktxn(self, message): pass | def on_blocktxn(self, message): pass | ||||
def on_cmpctblock(self, message): pass | def on_cmpctblock(self, message): pass | ||||
def on_feefilter(self, message): pass | def on_feefilter(self, message): pass | ||||
▲ Show 20 Lines • Show All 286 Lines • Show Last 20 Lines |