@@ -111,7 +111,7 @@ pub struct Handler {
111111
112112 bootstrap_addresses : Vec < SocketAddr > ,
113113
114- network_usage_in_10_seconds : Mutex < HashMap < & ' static str , VecDeque < ( Instant , usize ) > > > ,
114+ network_usage_in_10_seconds : Mutex < HashMap < String , VecDeque < ( Instant , usize ) > > > ,
115115
116116 min_peers : usize ,
117117 max_peers : usize ,
@@ -233,15 +233,15 @@ impl Handler {
233233 Ok ( ( ) )
234234 }
235235
236- pub fn recent_network_usage ( & self ) -> HashMap < & ' static str , usize > {
236+ pub fn recent_network_usage ( & self ) -> HashMap < String , usize > {
237237 let mut network_usage_in_10_seconds = self . network_usage_in_10_seconds . lock ( ) ;
238238 let mut result = HashMap :: with_capacity ( network_usage_in_10_seconds. len ( ) ) ;
239239 let now = Instant :: now ( ) ;
240240 for ( name, times) in & mut * network_usage_in_10_seconds {
241241 remove_outdated_network_usage ( times, & now) ;
242242 let total = times. iter ( ) . map ( |( _, usage) | usage) . sum ( ) ;
243243 if total != 0 {
244- result. insert ( * name, total) ;
244+ result. insert ( name. clone ( ) , total) ;
245245 }
246246 }
247247 result
@@ -387,7 +387,7 @@ impl IoHandler<Message> for Handler {
387387 {
388388 let mut network_usage_in_10_seconds = self . network_usage_in_10_seconds . lock ( ) ;
389389 insert_network_usage (
390- network_usage_in_10_seconds. entry ( ":: handshake" ) . or_default ( ) ,
390+ network_usage_in_10_seconds. entry ( format ! ( " handshake@{}" , target ) ) . or_default ( ) ,
391391 network_message_size,
392392 ) ;
393393 }
@@ -429,14 +429,18 @@ impl IoHandler<Message> for Handler {
429429 } => {
430430 let stream =
431431 * self . remote_node_ids_reverse . read ( ) . get ( & node_id) . ok_or_else ( || Error :: InvalidNode ( node_id) ) ?;
432- let network_message_size = match stream {
432+ let ( network_message_size, peer_addr ) = match stream {
433433 FIRST_OUTBOUND ...LAST_OUTBOUND => {
434434 let mut outbound_connections = self . outbound_connections . write ( ) ;
435435 if let Some ( con) = outbound_connections. get_mut ( & stream) {
436436 let _f = finally ( || {
437437 io. update_registration ( stream) ;
438438 } ) ;
439- con. enqueue_extension_message ( extension_name. to_string ( ) , need_encryption, data) ?
439+
440+ (
441+ con. enqueue_extension_message ( extension_name. to_string ( ) , need_encryption, data) ?,
442+ * con. peer_addr ( ) ,
443+ )
440444 } else {
441445 return Err ( format ! ( "{} is an invalid stream" , stream) . into ( ) )
442446 }
@@ -447,7 +451,10 @@ impl IoHandler<Message> for Handler {
447451 let _f = finally ( || {
448452 io. update_registration ( stream) ;
449453 } ) ;
450- con. enqueue_extension_message ( extension_name. to_string ( ) , need_encryption, data) ?
454+ (
455+ con. enqueue_extension_message ( extension_name. to_string ( ) , need_encryption, data) ?,
456+ * con. peer_addr ( ) ,
457+ )
451458 } else {
452459 return Err ( format ! ( "{} is an invalid stream" , stream) . into ( ) )
453460 }
@@ -456,7 +463,7 @@ impl IoHandler<Message> for Handler {
456463 } ;
457464 let mut network_usage_in_10_seconds = self . network_usage_in_10_seconds . lock ( ) ;
458465 insert_network_usage (
459- network_usage_in_10_seconds. entry ( extension_name) . or_default ( ) ,
466+ network_usage_in_10_seconds. entry ( format ! ( "::{}@{}" , extension_name, peer_addr ) ) . or_default ( ) ,
460467 network_message_size,
461468 ) ;
462469 }
@@ -540,7 +547,7 @@ impl IoHandler<Message> for Handler {
540547 {
541548 let mut network_usage_in_10_seconds = self . network_usage_in_10_seconds . lock ( ) ;
542549 insert_network_usage (
543- network_usage_in_10_seconds. entry ( ":: negotiation" ) . or_default ( ) ,
550+ network_usage_in_10_seconds. entry ( format ! ( " negotiation@{}" , peer_addr ) ) . or_default ( ) ,
544551 network_message_size,
545552 ) ;
546553 }
@@ -684,7 +691,9 @@ impl IoHandler<Message> for Handler {
684691 let network_message_size = con. enqueue_negotiation_response ( extension_name, version) ;
685692 let mut network_usage_in_10_seconds = self . network_usage_in_10_seconds . lock ( ) ;
686693 insert_network_usage (
687- network_usage_in_10_seconds. entry ( "::negotiation" ) . or_default ( ) ,
694+ network_usage_in_10_seconds
695+ . entry ( format ! ( "negotiation@{}" , con. peer_addr( ) ) )
696+ . or_default ( ) ,
688697 network_message_size,
689698 ) ;
690699 }
@@ -795,7 +804,7 @@ impl IoHandler<Message> for Handler {
795804 } ;
796805 let mut network_usage_in_10_seconds = self . network_usage_in_10_seconds . lock ( ) ;
797806 insert_network_usage (
798- network_usage_in_10_seconds. entry ( ":: handshake" ) . or_default ( ) ,
807+ network_usage_in_10_seconds. entry ( format ! ( " handshake@{}" , from ) ) . or_default ( ) ,
799808 network_message_size,
800809 ) ;
801810 }
@@ -834,7 +843,7 @@ impl IoHandler<Message> for Handler {
834843 } ;
835844 let mut network_usage_in_10_seconds = self . network_usage_in_10_seconds . lock ( ) ;
836845 insert_network_usage (
837- network_usage_in_10_seconds. entry ( ":: handshake" ) . or_default ( ) ,
846+ network_usage_in_10_seconds. entry ( format ! ( " handshake@{}" , from ) ) . or_default ( ) ,
838847 network_message_size,
839848 ) ;
840849 }
0 commit comments