@@ -400,13 +400,13 @@ fn zero_sized_handlers() {
400400 eprintln ! ( "Can't acquire creds, skipping test" ) ;
401401 return ;
402402 } ;
403- let i = Arc :: new ( RwLock :: new ( 0 ) ) ;
403+ let i = Arc :: new ( AtomicU16 :: new ( 0 ) ) ;
404404
405405 {
406406 let i_incrementer = {
407- let i = i . clone ( ) ;
407+ let i = Arc :: clone ( & i ) ;
408408 move |_: & Context , _: & mut Connection , _: & Stanza | {
409- * i . write ( ) . unwrap ( ) += 1 ;
409+ i . fetch_add ( 1 , Ordering :: Relaxed ) ;
410410 HandlerResult :: RemoveHandler
411411 }
412412 } ;
@@ -448,10 +448,10 @@ fn zero_sized_handlers() {
448448 . unwrap ( ) ;
449449 ctx. run ( ) ;
450450 }
451- assert_eq ! ( * i . read ( ) . unwrap ( ) , 1 ) ;
451+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 1 ) ;
452452
453453 // non zero sized handlers are called
454- * i . write ( ) . unwrap ( ) = 0 ;
454+ i . store ( 0 , Ordering :: Relaxed ) ;
455455 {
456456 assert_ne ! ( mem:: size_of_val( & i_incrementer) , 0 ) ;
457457
@@ -483,10 +483,10 @@ fn zero_sized_handlers() {
483483 . unwrap ( ) ;
484484 ctx. run ( ) ;
485485 }
486- assert_eq ! ( * i . read ( ) . unwrap ( ) , 1 ) ;
486+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 1 ) ;
487487
488488 // handlers_clear clears zs and non-zs handlers
489- * i . write ( ) . unwrap ( ) = 0 ;
489+ i . store ( 0 , Ordering :: Relaxed ) ;
490490 {
491491 let zero_sized = |_: & Context , conn : & mut Connection , _: & Stanza | {
492492 let pres = Stanza :: new_presence ( ) ;
@@ -532,14 +532,13 @@ fn zero_sized_handlers() {
532532 . unwrap ( ) ;
533533 ctx. run ( ) ;
534534 }
535- assert_eq ! ( * i . read ( ) . unwrap ( ) , 0 ) ;
535+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 0 ) ;
536536 }
537537
538538 assert_eq ! (
539539 Arc :: try_unwrap( i)
540- . expect( "There are hanging references to Rc value" )
541- . into_inner( )
542- . unwrap( ) ,
540+ . expect( "There are hanging references to rc value" )
541+ . into_inner( ) ,
543542 0
544543 ) ;
545544}
@@ -578,7 +577,7 @@ fn connection_handler() {
578577 }
579578 assert_eq ! (
580579 Arc :: try_unwrap( flags)
581- . expect( "There are hanging references to Rc value" )
580+ . expect( "There are hanging references to rc value" )
582581 . into_inner( )
583582 . unwrap( ) ,
584583 ( 1 , 0 , 1 )
@@ -594,7 +593,7 @@ fn timed_handler_creds() {
594593 return ;
595594 } ;
596595
597- let i = Arc :: new ( RwLock :: new ( 0 ) ) ;
596+ let i = Arc :: new ( AtomicU16 :: new ( 0 ) ) ;
598597
599598 let do_common_stuff = |conn : & mut Connection | {
600599 conn
@@ -610,9 +609,9 @@ fn timed_handler_creds() {
610609
611610 {
612611 let i_incrementer = {
613- let i = i . clone ( ) ;
612+ let i = Arc :: clone ( & i ) ;
614613 move |_: & Context , _: & mut Connection | {
615- * i . write ( ) . unwrap ( ) += 1 ;
614+ i . fetch_add ( 1 , Ordering :: Relaxed ) ;
616615 HandlerResult :: KeepHandler
617616 }
618617 } ;
@@ -636,12 +635,12 @@ fn timed_handler_creds() {
636635 } )
637636 . unwrap ( ) ;
638637 ctx. run ( ) ;
639- assert ! ( * i . read ( ) . unwrap ( ) > 0 ) ;
640- assert ! ( * i . read ( ) . unwrap ( ) < 1000 ) ;
638+ assert ! ( i . load ( Ordering :: Relaxed ) > 0 ) ;
639+ assert ! ( i . load ( Ordering :: Relaxed ) < 1000 ) ;
641640 }
642641
643642 // outside
644- * i . write ( ) . unwrap ( ) = 0 ;
643+ i . store ( 0 , Ordering :: Relaxed ) ;
645644 {
646645 let mut conn = creds. make_conn ( ) ;
647646 conn
@@ -661,12 +660,12 @@ fn timed_handler_creds() {
661660 } )
662661 . unwrap ( ) ;
663662 ctx. run ( ) ;
664- assert ! ( * i . read ( ) . unwrap ( ) > 0 ) ;
665- assert ! ( * i . read ( ) . unwrap ( ) < 1000 ) ;
663+ assert ! ( i . load ( Ordering :: Relaxed ) > 0 ) ;
664+ assert ! ( i . load ( Ordering :: Relaxed ) < 1000 ) ;
666665 }
667666
668667 // delete
669- * i . write ( ) . unwrap ( ) = 0 ;
668+ i . store ( 0 , Ordering :: Relaxed ) ;
670669 {
671670 let conn = creds. make_conn ( ) ;
672671 let ctx = conn
@@ -688,11 +687,11 @@ fn timed_handler_creds() {
688687 } )
689688 . unwrap ( ) ;
690689 ctx. run ( ) ;
691- assert_eq ! ( * i . read ( ) . unwrap ( ) , 0 ) ;
690+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 0 ) ;
692691 }
693692
694693 // clear
695- * i . write ( ) . unwrap ( ) = 0 ;
694+ i . store ( 0 , Ordering :: Relaxed ) ;
696695 {
697696 let conn = creds. make_conn ( ) ;
698697 let ctx = conn
@@ -714,14 +713,13 @@ fn timed_handler_creds() {
714713 } )
715714 . unwrap ( ) ;
716715 ctx. run ( ) ;
717- assert_eq ! ( * i . read ( ) . unwrap ( ) , 0 ) ;
716+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 0 ) ;
718717 }
719718 }
720719 assert_eq ! (
721720 Arc :: try_unwrap( i)
722- . expect( "There are hanging references to Rc value" )
723- . into_inner( )
724- . unwrap( ) ,
721+ . expect( "There are hanging references to rc value" )
722+ . into_inner( ) ,
725723 0
726724 ) ;
727725}
@@ -748,7 +746,7 @@ fn id_handler_creds() {
748746 return ;
749747 } ;
750748
751- let i = Arc :: new ( RwLock :: new ( 0 ) ) ;
749+ let i = Arc :: new ( AtomicU16 :: new ( 0 ) ) ;
752750
753751 let do_common_stuff = |_: & Context , conn : & mut Connection | {
754752 let mut iq = Stanza :: new_iq ( Some ( "get" ) , Some ( "get_roster" ) ) ;
@@ -771,9 +769,9 @@ fn id_handler_creds() {
771769
772770 {
773771 let i_incrementer = {
774- let i = i . clone ( ) ;
772+ let i = Arc :: clone ( & i ) ;
775773 move |_: & Context , _: & mut Connection , _: & Stanza | {
776- * i . write ( ) . unwrap ( ) += 1 ;
774+ i . fetch_add ( 1 , Ordering :: Relaxed ) ;
777775 HandlerResult :: KeepHandler
778776 }
779777 } ;
@@ -807,11 +805,11 @@ fn id_handler_creds() {
807805 } )
808806 . unwrap ( ) ;
809807 ctx. run ( ) ;
810- assert_eq ! ( * i . read ( ) . unwrap ( ) , 1 ) ;
808+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 1 ) ;
811809 }
812810
813811 // outside
814- * i . write ( ) . unwrap ( ) = 0 ;
812+ i . store ( 0 , Ordering :: Relaxed ) ;
815813 {
816814 let mut conn = creds. make_conn ( ) ;
817815 conn
@@ -838,11 +836,11 @@ fn id_handler_creds() {
838836 } )
839837 . unwrap ( ) ;
840838 ctx. run ( ) ;
841- assert_eq ! ( * i . read ( ) . unwrap ( ) , 1 ) ;
839+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 1 ) ;
842840 }
843841
844842 // delete
845- * i . write ( ) . unwrap ( ) = 0 ;
843+ i . store ( 0 , Ordering :: Relaxed ) ;
846844 {
847845 let conn = creds. make_conn ( ) ;
848846 let ctx = conn
@@ -865,11 +863,11 @@ fn id_handler_creds() {
865863 } )
866864 . unwrap ( ) ;
867865 ctx. run ( ) ;
868- assert_eq ! ( * i . read ( ) . unwrap ( ) , 0 ) ;
866+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 0 ) ;
869867 }
870868
871869 // clear
872- * i . write ( ) . unwrap ( ) = 0 ;
870+ i . store ( 0 , Ordering :: Relaxed ) ;
873871 {
874872 let conn = creds. make_conn ( ) ;
875873 let ctx = conn
@@ -891,14 +889,13 @@ fn id_handler_creds() {
891889 } )
892890 . unwrap ( ) ;
893891 ctx. run ( ) ;
894- assert_eq ! ( * i . read ( ) . unwrap ( ) , 0 ) ;
892+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 0 ) ;
895893 }
896894 }
897895 assert_eq ! (
898896 Arc :: try_unwrap( i)
899- . expect( "There are hanging references to Rc value" )
900- . into_inner( )
901- . unwrap( ) ,
897+ . expect( "There are hanging references to rc value" )
898+ . into_inner( ) ,
902899 0
903900 ) ;
904901}
@@ -912,7 +909,7 @@ fn handler() {
912909 return ;
913910 } ;
914911
915- let i = Arc :: new ( RwLock :: new ( 0 ) ) ;
912+ let i = Arc :: new ( AtomicU16 :: new ( 0 ) ) ;
916913
917914 let default_con_handler = |ctx : & Context , conn : & mut Connection , evt : ConnectionEvent | match evt {
918915 ConnectionEvent :: Connect => {
@@ -925,9 +922,9 @@ fn handler() {
925922 } ;
926923
927924 let i_incrementer = {
928- let i = i . clone ( ) ;
925+ let i = Arc :: clone ( & i ) ;
929926 move |_: & Context , _: & mut Connection , _: & Stanza | {
930- * i . write ( ) . unwrap ( ) += 1 ;
927+ i . fetch_add ( 1 , Ordering :: Relaxed ) ;
931928 HandlerResult :: KeepHandler
932929 }
933930 } ;
@@ -940,23 +937,23 @@ fn handler() {
940937 . expect ( "Can't add handler" ) ;
941938 let ctx = conn. connect_client ( None , None , default_con_handler) . unwrap ( ) ;
942939 ctx. run ( ) ;
943- assert_eq ! ( * i . read ( ) . unwrap ( ) , 1 ) ;
940+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 1 ) ;
944941 }
945942
946943 // handler call stanza name not existent
947- * i . write ( ) . unwrap ( ) = 0 ;
944+ i . store ( 0 , Ordering :: Relaxed ) ;
948945 {
949946 let mut conn = creds. make_conn ( ) ;
950947 conn
951948 . handler_add ( i_incrementer. clone ( ) , None , Some ( "non-existent" ) , None )
952949 . expect ( "Can't add handler" ) ;
953950 let ctx = conn. connect_client ( None , None , default_con_handler) . unwrap ( ) ;
954951 ctx. run ( ) ;
955- assert_eq ! ( * i . read ( ) . unwrap ( ) , 0 ) ;
952+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 0 ) ;
956953 }
957954
958955 // handler delete
959- * i . write ( ) . unwrap ( ) = 0 ;
956+ i . store ( 0 , Ordering :: Relaxed ) ;
960957 {
961958 let mut conn = creds. make_conn ( ) ;
962959 let handler = conn
@@ -965,11 +962,11 @@ fn handler() {
965962 conn. handler_delete ( handler) ;
966963 let ctx = conn. connect_client ( None , None , default_con_handler) . unwrap ( ) ;
967964 ctx. run ( ) ;
968- assert_eq ! ( * i . read ( ) . unwrap ( ) , 0 ) ;
965+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 0 ) ;
969966 }
970967
971968 // handler clear
972- * i . write ( ) . unwrap ( ) = 0 ;
969+ i . store ( 0 , Ordering :: Relaxed ) ;
973970 {
974971 let mut conn = creds. make_conn ( ) ;
975972 conn
@@ -978,29 +975,29 @@ fn handler() {
978975 conn. handlers_clear ( ) ;
979976 let ctx = conn. connect_client ( None , None , default_con_handler) . unwrap ( ) ;
980977 ctx. run ( ) ;
981- assert_eq ! ( * i . read ( ) . unwrap ( ) , 0 ) ;
978+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 0 ) ;
982979 }
983980
984981 // same handler twice
985- * i . write ( ) . unwrap ( ) = 0 ;
982+ i . store ( 0 , Ordering :: Relaxed ) ;
986983 {
987984 let mut conn = creds. make_conn ( ) ;
988985 assert ! ( conn. handler_add( & i_incrementer, None , Some ( "iq" ) , None , ) . is_some( ) ) ;
989986 assert ! ( conn. handler_add( & i_incrementer, None , Some ( "iq" ) , None ) . is_none( ) ) ;
990987 let ctx = conn. connect_client ( None , None , default_con_handler) . unwrap ( ) ;
991988 ctx. run ( ) ;
992- assert_eq ! ( * i . read ( ) . unwrap ( ) , 1 ) ;
989+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 1 ) ;
993990 }
994991
995992 // cloned handler twice, not sure if this behaviour is right
996- * i . write ( ) . unwrap ( ) = 0 ;
993+ i . store ( 0 , Ordering :: Relaxed ) ;
997994 {
998995 let mut conn = creds. make_conn ( ) ;
999996 assert ! ( conn. handler_add( i_incrementer. clone( ) , None , Some ( "iq" ) , None , ) . is_some( ) ) ;
1000997 assert ! ( conn. handler_add( i_incrementer. clone( ) , None , Some ( "iq" ) , None ) . is_none( ) ) ;
1001998 let ctx = conn. connect_client ( None , None , default_con_handler) . unwrap ( ) ;
1002999 ctx. run ( ) ;
1003- assert_eq ! ( * i . read ( ) . unwrap ( ) , 1 ) ;
1000+ assert_eq ! ( i . load ( Ordering :: Relaxed ) , 1 ) ;
10041001 }
10051002}
10061003
@@ -1096,7 +1093,7 @@ fn connection_handler_tls() {
10961093 }
10971094 assert_eq ! (
10981095 Arc :: try_unwrap( flags)
1099- . expect( "There are hanging references to Rc value" )
1096+ . expect( "There are hanging references to rc value" )
11001097 . into_inner( )
11011098 . unwrap( ) ,
11021099 ( 1 , 0 , 0 , 1 )
@@ -1139,7 +1136,7 @@ fn connection_handler_tls() {
11391136 ctx. run ( ) ;
11401137 }
11411138 let call_counts = Arc :: try_unwrap ( flags)
1142- . expect ( "There are hanging references to Rc value" )
1139+ . expect ( "There are hanging references to rc value" )
11431140 . into_inner ( )
11441141 . unwrap ( ) ;
11451142 // gives different results in CI and locally, probably difference in ejabberd versions
0 commit comments