@@ -785,9 +785,9 @@ rt_test! {
785
785
barrier. wait( ) ;
786
786
787
787
let ( fail_test, fail_test_recv) = oneshot:: channel:: <( ) >( ) ;
788
-
788
+ let flag_clone = flag . clone ( ) ;
789
789
let jh = tokio:: spawn( async move {
790
- // Create a TCP litener
790
+ // Create a TCP listener
791
791
let listener = TcpListener :: bind( "127.0.0.1:0" ) . await . unwrap( ) ;
792
792
let addr = listener. local_addr( ) . unwrap( ) ;
793
793
@@ -798,7 +798,7 @@ rt_test! {
798
798
799
799
// Yield until connected
800
800
let mut cnt = 0 ;
801
- while !flag . load( SeqCst ) {
801
+ while !flag_clone . load( SeqCst ) {
802
802
tokio:: task:: yield_now( ) . await ;
803
803
cnt += 1 ;
804
804
@@ -814,7 +814,7 @@ rt_test! {
814
814
} ,
815
815
async {
816
816
let _ = listener. accept( ) . await . unwrap( ) ;
817
- flag . store( true , SeqCst ) ;
817
+ flag_clone . store( true , SeqCst ) ;
818
818
}
819
819
) ;
820
820
} ) ;
@@ -824,6 +824,11 @@ rt_test! {
824
824
let success = fail_test_recv. await . is_err( ) ;
825
825
826
826
if success {
827
+ // Setting flag to true ensures that the tasks we spawned at
828
+ // the beginning of the test will exit.
829
+ // If we don't do this, the test will hang since the runtime waits
830
+ // for all spawned tasks to finish when dropping.
831
+ flag. store( true , SeqCst ) ;
827
832
// Check for panics in spawned task.
828
833
jh. abort( ) ;
829
834
jh. await . unwrap( ) ;
0 commit comments