mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 12:02:48 +01:00
ce8b04fc38
d117f4541d4717e83c9396273e92960723622030 Add test for setban (nicolas.dorier) dc7529abf0197dccb876dc4a93cbdd2ad9f03e5c [Fix] Allow connection of a noban banned peer (nicolas.dorier) Pull request description: Reported by @MarcoFalke on https://github.com/bitcoin/bitcoin/pull/16248#discussion_r314026195 The bug would mean that if the peer connecting to you is banned, but whitelisted without specific permissions, it would not be able to connect to the node. The solution is just to move the same line below. ACKs for top commit: Sjors: Agree inline is more clear. utACK d117f45 MarcoFalke: ACK d117f4541d4717e83c9396273e92960723622030 Tree-SHA512: 0fed39acb1e8db67bb0bf4c4de3ad034ae776f38d55bd661f1ae0e1a4c6becaf1824ab46ed8279f2f31df3f4b29ff56461d8b167d3e9cece62cfe58b5a912811
48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
# Copyright (c) 2015-2019 The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
"""Test the setban rpc call."""
|
|
|
|
from test_framework.test_framework import BitcoinTestFramework
|
|
from test_framework.util import (
|
|
connect_nodes,
|
|
p2p_port
|
|
)
|
|
|
|
class SetBanTests(BitcoinTestFramework):
|
|
def set_test_params(self):
|
|
self.num_nodes = 2
|
|
self.setup_clean_chain = True
|
|
self.extra_args = [[],[]]
|
|
|
|
def run_test(self):
|
|
# Node 0 connects to Node 1, check that the noban permission is not granted
|
|
connect_nodes(self.nodes[0], 1)
|
|
peerinfo = self.nodes[1].getpeerinfo()[0]
|
|
assert(not 'noban' in peerinfo['permissions'])
|
|
|
|
# Node 0 get banned by Node 1
|
|
self.nodes[1].setban("127.0.0.1", "add")
|
|
|
|
# Node 0 should not be able to reconnect
|
|
with self.nodes[1].assert_debug_log(expected_msgs=['dropped (banned)\n']):
|
|
self.restart_node(1, [])
|
|
self.nodes[0].addnode("127.0.0.1:" + str(p2p_port(1)), "onetry")
|
|
|
|
# However, node 0 should be able to reconnect if it has noban permission
|
|
self.restart_node(1, ['-whitelist=127.0.0.1'])
|
|
connect_nodes(self.nodes[0], 1)
|
|
peerinfo = self.nodes[1].getpeerinfo()[0]
|
|
assert('noban' in peerinfo['permissions'])
|
|
|
|
# If we remove the ban, Node 0 should be able to reconnect even without noban permission
|
|
self.nodes[1].setban("127.0.0.1", "remove")
|
|
self.restart_node(1, [])
|
|
connect_nodes(self.nodes[0], 1)
|
|
peerinfo = self.nodes[1].getpeerinfo()[0]
|
|
assert(not 'noban' in peerinfo['permissions'])
|
|
|
|
if __name__ == '__main__':
|
|
SetBanTests().main()
|