@@ -669,28 +669,31 @@ impl Batcher {
669669 }
670670 } ;
671671
672- let removed_entries = batch_state_guard
672+ let removed_entries: Vec < _ > = batch_state_guard
673673 . batch_queue
674- . extract_if ( |entry, _| entry. sender == user_address) ;
674+ . extract_if ( |entry, _| entry. sender == user_address)
675+ . collect ( ) ;
675676
676677 // Notify user via websocket before removing the proofs
677678 for ( entry, _) in removed_entries {
678- if let Some ( ws_sink) = entry. messaging_sink . as_ref ( ) {
679- send_message (
680- ws_sink. clone ( ) ,
681- SubmitProofResponseMessage :: UserFundsUnlocked ,
682- )
683- . await ;
684- // Close websocket connection
685- let mut sink_guard = ws_sink. write ( ) . await ;
686- if let Err ( e) = sink_guard. close ( ) . await {
687- warn ! (
688- "Error closing websocket for user {:?}: {:?}" ,
689- user_address, e
690- ) ;
691- } else {
692- info ! ( "Closed websocket connection for user {:?}" , user_address) ;
693- }
679+ if let Some ( ws_sink) = entry. messaging_sink {
680+ tokio:: spawn ( async move {
681+ send_message (
682+ ws_sink. clone ( ) ,
683+ SubmitProofResponseMessage :: UserFundsUnlocked ,
684+ )
685+ . await ;
686+ // Close websocket connection
687+ let mut sink_guard = ws_sink. write ( ) . await ;
688+ if let Err ( e) = sink_guard. close ( ) . await {
689+ warn ! (
690+ "Error closing websocket for user {:?}: {:?}" ,
691+ user_address, e
692+ ) ;
693+ } else {
694+ info ! ( "Closed websocket connection for user {:?}" , user_address) ;
695+ }
696+ } ) ;
694697 }
695698 info ! (
696699 "Removed proof with nonce {} for user {:?} from batch queue" ,
0 commit comments