@@ -13,7 +13,6 @@ use tokio::runtime::Runtime;
13
13
use types:: {
14
14
ChainSpec , EnrForkId , Epoch , EthSpec , ForkContext , ForkName , Hash256 , MinimalEthSpec , Slot ,
15
15
} ;
16
- use unused_port:: unused_tcp4_port;
17
16
18
17
type E = MinimalEthSpec ;
19
18
type ReqId = usize ;
@@ -76,7 +75,7 @@ pub fn build_config(port: u16, mut boot_nodes: Vec<Enr>) -> NetworkConfig {
76
75
. unwrap ( ) ;
77
76
78
77
config. set_ipv4_listening_address ( std:: net:: Ipv4Addr :: UNSPECIFIED , port, port) ;
79
- config. enr_udp4_port = Some ( port) ;
78
+ config. enr_udp4_port = if port == 0 { None } else { Some ( port) } ;
80
79
config. enr_address = ( Some ( std:: net:: Ipv4Addr :: LOCALHOST ) , None ) ;
81
80
config. boot_nodes_enr . append ( & mut boot_nodes) ;
82
81
config. network_dir = path. into_path ( ) ;
@@ -96,7 +95,7 @@ pub async fn build_libp2p_instance(
96
95
fork_name : ForkName ,
97
96
spec : & ChainSpec ,
98
97
) -> Libp2pInstance {
99
- let port = unused_tcp4_port ( ) . unwrap ( ) ;
98
+ let port = 0 ;
100
99
let config = build_config ( port, boot_nodes) ;
101
100
// launch libp2p service
102
101
@@ -139,33 +138,26 @@ pub async fn build_node_pair(
139
138
let mut sender = build_libp2p_instance ( rt. clone ( ) , vec ! [ ] , sender_log, fork_name, spec) . await ;
140
139
let mut receiver = build_libp2p_instance ( rt, vec ! [ ] , receiver_log, fork_name, spec) . await ;
141
140
142
- let receiver_multiaddr = receiver. local_enr ( ) . multiaddr ( ) [ 1 ] . clone ( ) ;
143
-
144
141
// let the two nodes set up listeners
145
142
let sender_fut = async {
146
143
loop {
147
- if let NetworkEvent :: NewListenAddr ( _ ) = sender. next_event ( ) . await {
148
- return ;
144
+ if let NetworkEvent :: NewListenAddr ( addr ) = sender. next_event ( ) . await {
145
+ return addr ;
149
146
}
150
147
}
151
148
} ;
152
149
let receiver_fut = async {
153
150
loop {
154
- if let NetworkEvent :: NewListenAddr ( _ ) = receiver. next_event ( ) . await {
155
- return ;
151
+ if let NetworkEvent :: NewListenAddr ( addr ) = receiver. next_event ( ) . await {
152
+ return addr ;
156
153
}
157
154
}
158
155
} ;
159
156
160
157
let joined = futures:: future:: join ( sender_fut, receiver_fut) ;
161
158
162
- // wait for either both nodes to listen or a timeout
163
- tokio:: select! {
164
- _ = tokio:: time:: sleep( Duration :: from_millis( 500 ) ) => { }
165
- _ = joined => { }
166
- }
159
+ let receiver_multiaddr = joined. await . 1 ;
167
160
168
- // sender.dial_peer(peer_id);
169
161
match sender. testing_dial ( receiver_multiaddr. clone ( ) ) {
170
162
Ok ( ( ) ) => {
171
163
debug ! ( log, "Sender dialed receiver" ; "address" => format!( "{:?}" , receiver_multiaddr) )
0 commit comments