@@ -108,16 +108,15 @@ enum InitSyncTracker{
108
108
}
109
109
110
110
enum PeerState {
111
- Handshake ( PeerHandshake ) ,
111
+ Authenticating ( PeerHandshake ) ,
112
112
Connected ( Conduit ) ,
113
113
}
114
114
115
115
impl PeerState {
116
116
fn is_ready_for_encryption ( & self ) -> bool {
117
- if let & PeerState :: Connected ( _) = self {
118
- true
119
- } else {
120
- false
117
+ match self {
118
+ & PeerState :: Connected ( _) => true ,
119
+ _ => false
121
120
}
122
121
}
123
122
}
@@ -283,7 +282,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
283
282
284
283
let mut peers = self . peers . lock ( ) . unwrap ( ) ;
285
284
if peers. peers . insert ( descriptor, Peer {
286
- encryptor : PeerState :: Handshake ( handshake) ,
285
+ encryptor : PeerState :: Authenticating ( handshake) ,
287
286
outbound : true ,
288
287
their_node_id : Some ( their_node_id. clone ( ) ) ,
289
288
their_features : None ,
@@ -318,7 +317,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
318
317
319
318
let mut peers = self . peers . lock ( ) . unwrap ( ) ;
320
319
if peers. peers . insert ( descriptor, Peer {
321
- encryptor : PeerState :: Handshake ( handshake) ,
320
+ encryptor : PeerState :: Authenticating ( handshake) ,
322
321
outbound : false ,
323
322
their_node_id : None ,
324
323
their_features : None ,
@@ -469,9 +468,9 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
469
468
let mut conduit_option = None ;
470
469
let mut remote_pubkey_option = None ;
471
470
472
- if let & mut PeerState :: Handshake ( ref mut handshake) = & mut peer. encryptor {
471
+ if let & mut PeerState :: Authenticating ( ref mut handshake) = & mut peer. encryptor {
473
472
let ( response, conduit, remote_pubkey) = handshake. process_act ( & peer. pending_read_buffer , None ) . unwrap ( ) ;
474
- peer. pending_read_buffer . drain ( .. ) ; // we read it all
473
+ peer. pending_read_buffer = Vec :: new ( ) ; // empty the pending read buffer
475
474
476
475
if let Some ( key) = remote_pubkey {
477
476
remote_pubkey_option = Some ( key) ;
@@ -543,18 +542,12 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
543
542
}
544
543
}
545
544
546
- let next_message_result = conduit. decrypt ( & peer. pending_read_buffer ) ;
547
-
548
- let offset = next_message_result. 1 ;
549
- if offset == 0 {
550
- // nothing got read
551
- break ;
545
+ let message_option = conduit. decrypt_single_message ( Some ( & peer. pending_read_buffer ) ) ;
546
+ let msg_data = if let Some ( message) = message_option {
547
+ message
552
548
} else {
553
- peer. pending_read_buffer . drain ( 0 ..offset) ;
554
- }
555
-
556
- // something got read, so we definitely have a message
557
- let msg_data = next_message_result. 0 . unwrap ( ) ;
549
+ break ;
550
+ } ;
558
551
559
552
{
560
553
{
0 commit comments