Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/mininode.py
Show First 20 Lines • Show All 195 Lines • ▼ Show 20 Lines | def _on_data(self): | ||||
parses and verifies the P2P header, then passes the P2P payload to | parses and verifies the P2P header, then passes the P2P payload to | ||||
the on_message callback for processing.""" | the on_message callback for processing.""" | ||||
try: | try: | ||||
with mininode_lock: | with mininode_lock: | ||||
if len(self.recvbuf) < 4: | if len(self.recvbuf) < 4: | ||||
return None | return None | ||||
if self.recvbuf[:4] != self.magic_bytes: | if self.recvbuf[:4] != self.magic_bytes: | ||||
raise ValueError( | raise ValueError( | ||||
"got garbage {}".format(repr(self.recvbuf))) | "magic bytes mismatch: {} != {}".format( | ||||
repr( | |||||
self.magic_bytes), repr( | |||||
self.recvbuf))) | |||||
if len(self.recvbuf) < 4 + 12 + 4 + 4: | if len(self.recvbuf) < 4 + 12 + 4 + 4: | ||||
return None | return None | ||||
command = self.recvbuf[4:4 + 12].split(b"\x00", 1)[0] | command = self.recvbuf[4:4 + 12].split(b"\x00", 1)[0] | ||||
msglen = struct.unpack( | msglen = struct.unpack( | ||||
"<i", self.recvbuf[4 + 12:4 + 12 + 4])[0] | "<i", self.recvbuf[4 + 12:4 + 12 + 4])[0] | ||||
checksum = self.recvbuf[4 + 12 + 4:4 + 12 + 4 + 4] | checksum = self.recvbuf[4 + 12 + 4:4 + 12 + 4 + 4] | ||||
if len(self.recvbuf) < 4 + 12 + 4 + 4 + msglen: | if len(self.recvbuf) < 4 + 12 + 4 + 4 + msglen: | ||||
return None | return None | ||||
▲ Show 20 Lines • Show All 506 Lines • Show Last 20 Lines |