@@ -307,13 +307,13 @@ impl<T: EthSpec> PeerInfo<T> {
307
307
308
308
/// Checks if the peer is outbound-only
309
309
pub fn is_outbound_only ( & self ) -> bool {
310
- matches ! ( self . connection_status, Connected { n_in, n_out} if n_in == 0 && n_out > 0 )
310
+ matches ! ( self . connection_status, Connected { n_in, n_out, .. } if n_in == 0 && n_out > 0 )
311
311
}
312
312
313
313
/// Returns the number of connections with this peer.
314
314
pub fn connections ( & self ) -> ( u8 , u8 ) {
315
315
match self . connection_status {
316
- Connected { n_in, n_out } => ( n_in, n_out) ,
316
+ Connected { n_in, n_out, .. } => ( n_in, n_out) ,
317
317
_ => ( 0 , 0 ) ,
318
318
}
319
319
}
@@ -421,41 +421,45 @@ impl<T: EthSpec> PeerInfo<T> {
421
421
422
422
/// Modifies the status to Connected and increases the number of ingoing
423
423
/// connections by one
424
- pub ( super ) fn connect_ingoing ( & mut self , seen_multiaddr : Option < Multiaddr > ) {
424
+ pub ( super ) fn connect_ingoing ( & mut self , multiaddr : Multiaddr ) {
425
+ self . seen_multiaddrs . insert ( multiaddr. clone ( ) ) ;
426
+
425
427
match & mut self . connection_status {
426
428
Connected { n_in, .. } => * n_in += 1 ,
427
429
Disconnected { .. }
428
430
| Banned { .. }
429
431
| Dialing { .. }
430
432
| Disconnecting { .. }
431
433
| Unknown => {
432
- self . connection_status = Connected { n_in : 1 , n_out : 0 } ;
434
+ self . connection_status = Connected {
435
+ n_in : 1 ,
436
+ n_out : 0 ,
437
+ multiaddr,
438
+ } ;
433
439
self . connection_direction = Some ( ConnectionDirection :: Incoming ) ;
434
440
}
435
441
}
436
-
437
- if let Some ( multiaddr) = seen_multiaddr {
438
- self . seen_multiaddrs . insert ( multiaddr) ;
439
- }
440
442
}
441
443
442
444
/// Modifies the status to Connected and increases the number of outgoing
443
445
/// connections by one
444
- pub ( super ) fn connect_outgoing ( & mut self , seen_multiaddr : Option < Multiaddr > ) {
446
+ pub ( super ) fn connect_outgoing ( & mut self , multiaddr : Multiaddr ) {
447
+ self . seen_multiaddrs . insert ( multiaddr. clone ( ) ) ;
445
448
match & mut self . connection_status {
446
449
Connected { n_out, .. } => * n_out += 1 ,
447
450
Disconnected { .. }
448
451
| Banned { .. }
449
452
| Dialing { .. }
450
453
| Disconnecting { .. }
451
454
| Unknown => {
452
- self . connection_status = Connected { n_in : 0 , n_out : 1 } ;
455
+ self . connection_status = Connected {
456
+ n_in : 0 ,
457
+ n_out : 1 ,
458
+ multiaddr,
459
+ } ;
453
460
self . connection_direction = Some ( ConnectionDirection :: Outgoing ) ;
454
461
}
455
462
}
456
- if let Some ( multiaddr) = seen_multiaddr {
457
- self . seen_multiaddrs . insert ( multiaddr) ;
458
- }
459
463
}
460
464
461
465
#[ cfg( test) ]
@@ -487,6 +491,8 @@ pub enum ConnectionDirection {
487
491
pub enum PeerConnectionStatus {
488
492
/// The peer is connected.
489
493
Connected {
494
+ /// The multiaddr that we are connected via.
495
+ multiaddr : Multiaddr ,
490
496
/// number of ingoing connections.
491
497
n_in : u8 ,
492
498
/// number of outgoing connections.
@@ -522,7 +528,12 @@ impl Serialize for PeerConnectionStatus {
522
528
fn serialize < S : Serializer > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > {
523
529
let mut s = serializer. serialize_struct ( "connection_status" , 6 ) ?;
524
530
match self {
525
- Connected { n_in, n_out } => {
531
+ Connected {
532
+ n_in,
533
+ n_out,
534
+ multiaddr,
535
+ } => {
536
+ s. serialize_field ( "multiaddr" , multiaddr) ?;
526
537
s. serialize_field ( "status" , "connected" ) ?;
527
538
s. serialize_field ( "connections_in" , n_in) ?;
528
539
s. serialize_field ( "connections_out" , n_out) ?;
0 commit comments