File tree 15 files changed +39
-0
lines changed 15 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -73,6 +73,7 @@ crate::impl_client_v17__submitblock!();
73
73
// == Network ==
74
74
crate :: impl_client_v17__addnode!( ) ;
75
75
crate :: impl_client_v17__clearbanned!( ) ;
76
+ crate :: impl_client_v17__disconnectnode!( ) ;
76
77
crate :: impl_client_v17__getaddednodeinfo!( ) ;
77
78
crate :: impl_client_v17__getnettotals!( ) ;
78
79
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -41,6 +41,22 @@ macro_rules! impl_client_v17__clearbanned {
41
41
} ;
42
42
}
43
43
44
+ /// Implements Bitcoin Core JSON-RPC API method `disconnectnode`
45
+ #[ macro_export]
46
+ macro_rules! impl_client_v17__disconnectnode {
47
+ ( ) => {
48
+ impl Client {
49
+ pub fn disconnect_node( & self , address: & str ) -> Result <( ) > {
50
+ match self . call( "disconnectnode" , & [ into_json( address) ?] ) {
51
+ Ok ( serde_json:: Value :: Null ) => Ok ( ( ) ) ,
52
+ Ok ( res) => Err ( Error :: Returned ( res. to_string( ) ) ) ,
53
+ Err ( err) => Err ( err. into( ) ) ,
54
+ }
55
+ }
56
+ }
57
+ } ;
58
+ }
59
+
44
60
/// Implements Bitcoin Core JSON-RPC API method `getaddednodeinfo`
45
61
#[ macro_export]
46
62
macro_rules! impl_client_v17__getaddednodeinfo {
Original file line number Diff line number Diff line change @@ -77,6 +77,7 @@ crate::impl_client_v17__submitblock!();
77
77
// == Network ==
78
78
crate :: impl_client_v17__addnode!( ) ;
79
79
crate :: impl_client_v17__clearbanned!( ) ;
80
+ crate :: impl_client_v17__disconnectnode!( ) ;
80
81
crate :: impl_client_v17__getaddednodeinfo!( ) ;
81
82
crate :: impl_client_v17__getnettotals!( ) ;
82
83
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -75,6 +75,7 @@ crate::impl_client_v17__submitblock!();
75
75
// == Network ==
76
76
crate :: impl_client_v17__addnode!( ) ;
77
77
crate :: impl_client_v17__clearbanned!( ) ;
78
+ crate :: impl_client_v17__disconnectnode!( ) ;
78
79
crate :: impl_client_v17__getaddednodeinfo!( ) ;
79
80
crate :: impl_client_v17__getnettotals!( ) ;
80
81
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -72,6 +72,7 @@ crate::impl_client_v17__submitblock!();
72
72
// == Network ==
73
73
crate :: impl_client_v17__addnode!( ) ;
74
74
crate :: impl_client_v17__clearbanned!( ) ;
75
+ crate :: impl_client_v17__disconnectnode!( ) ;
75
76
crate :: impl_client_v17__getaddednodeinfo!( ) ;
76
77
crate :: impl_client_v17__getnettotals!( ) ;
77
78
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -74,6 +74,7 @@ crate::impl_client_v17__submitblock!();
74
74
// == Network ==
75
75
crate :: impl_client_v17__addnode!( ) ;
76
76
crate :: impl_client_v17__clearbanned!( ) ;
77
+ crate :: impl_client_v17__disconnectnode!( ) ;
77
78
crate :: impl_client_v17__getaddednodeinfo!( ) ;
78
79
crate :: impl_client_v17__getnettotals!( ) ;
79
80
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -74,6 +74,7 @@ crate::impl_client_v17__submitblock!();
74
74
// == Network ==
75
75
crate :: impl_client_v17__addnode!( ) ;
76
76
crate :: impl_client_v17__clearbanned!( ) ;
77
+ crate :: impl_client_v17__disconnectnode!( ) ;
77
78
crate :: impl_client_v17__getaddednodeinfo!( ) ;
78
79
crate :: impl_client_v17__getnettotals!( ) ;
79
80
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -76,6 +76,7 @@ crate::impl_client_v17__submitblock!();
76
76
// == Network ==
77
77
crate :: impl_client_v17__addnode!( ) ;
78
78
crate :: impl_client_v17__clearbanned!( ) ;
79
+ crate :: impl_client_v17__disconnectnode!( ) ;
79
80
crate :: impl_client_v17__getaddednodeinfo!( ) ;
80
81
crate :: impl_client_v17__getnettotals!( ) ;
81
82
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -73,6 +73,7 @@ crate::impl_client_v17__submitblock!();
73
73
// == Network ==
74
74
crate :: impl_client_v17__addnode!( ) ;
75
75
crate :: impl_client_v17__clearbanned!( ) ;
76
+ crate :: impl_client_v17__disconnectnode!( ) ;
76
77
crate :: impl_client_v17__getaddednodeinfo!( ) ;
77
78
crate :: impl_client_v17__getnettotals!( ) ;
78
79
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -73,6 +73,7 @@ crate::impl_client_v17__submitblock!();
73
73
// == Network ==
74
74
crate :: impl_client_v17__addnode!( ) ;
75
75
crate :: impl_client_v17__clearbanned!( ) ;
76
+ crate :: impl_client_v17__disconnectnode!( ) ;
76
77
crate :: impl_client_v17__getaddednodeinfo!( ) ;
77
78
crate :: impl_client_v17__getnettotals!( ) ;
78
79
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -78,6 +78,7 @@ crate::impl_client_v17__submitblock!();
78
78
// == Network ==
79
79
crate :: impl_client_v17__addnode!( ) ;
80
80
crate :: impl_client_v17__clearbanned!( ) ;
81
+ crate :: impl_client_v17__disconnectnode!( ) ;
81
82
crate :: impl_client_v17__getaddednodeinfo!( ) ;
82
83
crate :: impl_client_v17__getnettotals!( ) ;
83
84
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -74,6 +74,7 @@ crate::impl_client_v17__submitblock!();
74
74
// == Network ==
75
75
crate :: impl_client_v17__addnode!( ) ;
76
76
crate :: impl_client_v17__clearbanned!( ) ;
77
+ crate :: impl_client_v17__disconnectnode!( ) ;
77
78
crate :: impl_client_v17__getaddednodeinfo!( ) ;
78
79
crate :: impl_client_v17__getnettotals!( ) ;
79
80
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -76,6 +76,7 @@ crate::impl_client_v17__submitblock!();
76
76
// == Network ==
77
77
crate :: impl_client_v17__addnode!( ) ;
78
78
crate :: impl_client_v17__clearbanned!( ) ;
79
+ crate :: impl_client_v17__disconnectnode!( ) ;
79
80
crate :: impl_client_v17__getaddednodeinfo!( ) ;
80
81
crate :: impl_client_v17__getnettotals!( ) ;
81
82
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -76,6 +76,7 @@ crate::impl_client_v17__submitblock!();
76
76
// == Network ==
77
77
crate :: impl_client_v17__addnode!( ) ;
78
78
crate :: impl_client_v17__clearbanned!( ) ;
79
+ crate :: impl_client_v17__disconnectnode!( ) ;
79
80
crate :: impl_client_v17__getaddednodeinfo!( ) ;
80
81
crate :: impl_client_v17__getnettotals!( ) ;
81
82
crate :: impl_client_v17__getnetworkinfo!( ) ;
Original file line number Diff line number Diff line change @@ -33,6 +33,16 @@ fn network__clear_banned() {
33
33
node. client . clear_banned ( ) . expect ( "clearbanned" ) ;
34
34
}
35
35
36
+ #[ test]
37
+ fn network__disconnect_node ( ) {
38
+ let ( _node1, node2, _node3) = integration_test:: three_node_network ( ) ;
39
+
40
+ let peers = node2. client . get_peer_info ( ) . expect ( "getpeerinfo" ) ;
41
+ let peer = peers. 0 . first ( ) . expect ( "should have at least one peer" ) ;
42
+
43
+ node2. client . disconnect_node ( & peer. address ) . expect ( "disconnectnode" ) ;
44
+ }
45
+
36
46
#[ test]
37
47
fn network__get_added_node_info ( ) {
38
48
let node = Node :: with_wallet ( Wallet :: None , & [ ] ) ;
You can’t perform that action at this time.
0 commit comments