@@ -922,47 +922,48 @@ impl<R, S> FreshHandler<R, S> {
922922 S : AsyncRead + AsyncWrite + Unpin + Send ,
923923 R : CryptoRng + RngCore + Send ,
924924 {
925- let initial_request = match self . wait_for_initial_message ( ) . await {
926- Ok ( req) => req,
927- Err ( err) => {
928- self . send_and_forget_error_response ( err) . await ;
929- return None ;
930- }
931- } ;
925+ loop {
926+ let req = self . wait_for_initial_message ( ) . await ;
927+ let initial_request = match req {
928+ Ok ( req) => req,
929+ Err ( err) => {
930+ self . send_and_forget_error_response ( err) . await ;
931+ return None ;
932+ }
933+ } ;
932934
933- // see if we managed to register the client through this request
934- let maybe_auth_res = match self . handle_initial_client_request ( initial_request) . await {
935- Ok ( maybe_auth_res) => maybe_auth_res,
936- Err ( err) => {
937- debug ! ( "initial client request handling error: {err}" ) ;
938- self . send_and_forget_error_response ( err) . await ;
939- return None ;
940- }
941- } ;
935+ // see if we managed to register the client through this request
936+ let maybe_auth_res = match self . handle_initial_client_request ( initial_request) . await {
937+ Ok ( maybe_auth_res) => maybe_auth_res,
938+ Err ( err) => {
939+ debug ! ( "initial client request handling error: {err}" ) ;
940+ self . send_and_forget_error_response ( err) . await ;
941+ return None ;
942+ }
943+ } ;
942944
943- if let Some ( registration_details) = maybe_auth_res {
944- let ( mix_sender, mix_receiver) = mpsc:: unbounded ( ) ;
945- // Channel for handlers to ask other handlers if they are still active.
946- let ( is_active_request_sender, is_active_request_receiver) = mpsc:: unbounded ( ) ;
947- self . shared_state . active_clients_store . insert_remote (
948- registration_details. address ,
949- mix_sender,
950- is_active_request_sender,
951- registration_details. session_request_timestamp ,
952- ) ;
953-
954- AuthenticatedHandler :: upgrade (
955- self ,
956- registration_details,
957- mix_receiver,
958- is_active_request_receiver,
959- )
960- . await
961- . inspect_err ( |err| error ! ( "failed to upgrade client handler: {err}" ) )
962- . ok ( ) ;
963- }
945+ if let Some ( registration_details) = maybe_auth_res {
946+ let ( mix_sender, mix_receiver) = mpsc:: unbounded ( ) ;
947+ // Channel for handlers to ask other handlers if they are still active.
948+ let ( is_active_request_sender, is_active_request_receiver) = mpsc:: unbounded ( ) ;
949+ self . shared_state . active_clients_store . insert_remote (
950+ registration_details. address ,
951+ mix_sender,
952+ is_active_request_sender,
953+ registration_details. session_request_timestamp ,
954+ ) ;
964955
965- None
956+ return AuthenticatedHandler :: upgrade (
957+ self ,
958+ registration_details,
959+ mix_receiver,
960+ is_active_request_receiver,
961+ )
962+ . await
963+ . inspect_err ( |err| error ! ( "failed to upgrade client handler: {err}" ) )
964+ . ok ( ) ;
965+ }
966+ }
966967 }
967968
968969 pub ( crate ) async fn wait_for_initial_message (
0 commit comments