mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 04:22:55 +01:00
merge bitcoin#15697: Make swap_magic_bytes in p2p_invalid_messages atomic
This commit is contained in:
parent
2ecf042619
commit
a5445a4584
@ -3,10 +3,11 @@
|
|||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
"""Test node responses to invalid network messages."""
|
"""Test node responses to invalid network messages."""
|
||||||
|
import asyncio
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
from test_framework import messages
|
from test_framework import messages
|
||||||
from test_framework.mininode import P2PDataStore
|
from test_framework.mininode import P2PDataStore, NetworkThread
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
|
|
||||||
|
|
||||||
@ -139,8 +140,15 @@ class InvalidMessagesTest(BitcoinTestFramework):
|
|||||||
|
|
||||||
def test_magic_bytes(self):
|
def test_magic_bytes(self):
|
||||||
conn = self.nodes[0].add_p2p_connection(P2PDataStore())
|
conn = self.nodes[0].add_p2p_connection(P2PDataStore())
|
||||||
|
|
||||||
|
def swap_magic_bytes():
|
||||||
conn._on_data = lambda: None # Need to ignore all incoming messages from now, since they come with "invalid" magic bytes
|
conn._on_data = lambda: None # Need to ignore all incoming messages from now, since they come with "invalid" magic bytes
|
||||||
conn.magic_bytes = b'\x00\x11\x22\x32'
|
conn.magic_bytes = b'\x00\x11\x22\x32'
|
||||||
|
|
||||||
|
# Call .result() to block until the atomic swap is complete, otherwise
|
||||||
|
# we might run into races later on
|
||||||
|
asyncio.run_coroutine_threadsafe(asyncio.coroutine(swap_magic_bytes)(), NetworkThread.network_event_loop).result()
|
||||||
|
|
||||||
with self.nodes[0].assert_debug_log(['PROCESSMESSAGE: INVALID MESSAGESTART ping']):
|
with self.nodes[0].assert_debug_log(['PROCESSMESSAGE: INVALID MESSAGESTART ping']):
|
||||||
conn.send_message(messages.msg_ping(nonce=0xff))
|
conn.send_message(messages.msg_ping(nonce=0xff))
|
||||||
conn.wait_for_disconnect(timeout=1)
|
conn.wait_for_disconnect(timeout=1)
|
||||||
|
Loading…
Reference in New Issue
Block a user