@@ -16,10 +16,10 @@ use oo7::{
1616use tokio:: sync:: { Mutex , RwLock } ;
1717use tokio_stream:: StreamExt ;
1818use zbus:: {
19- names:: { OwnedUniqueName , UniqueName } ,
19+ names:: UniqueName ,
2020 object_server:: SignalEmitter ,
2121 proxy:: Defaults ,
22- zvariant:: { ObjectPath , OwnedObjectPath , OwnedValue , Value } ,
22+ zvariant:: { ObjectPath , Optional , OwnedObjectPath , OwnedValue , Value } ,
2323} ;
2424
2525use crate :: {
@@ -516,14 +516,16 @@ impl Service {
516516 . build ( ) ;
517517 let mut stream = zbus:: MessageStream :: for_match_rule ( rule, self . connection ( ) , None ) . await ?;
518518 while let Some ( message) = stream. try_next ( ) . await ? {
519+ let body = message. body ( ) ;
519520 let Ok ( ( _name, old_owner, new_owner) ) =
520- message
521- . body ( )
522- . deserialize :: < ( String , OwnedUniqueName , OwnedUniqueName ) > ( )
521+ body. deserialize :: < ( String , Optional < UniqueName < ' _ > > , Optional < UniqueName < ' _ > > ) > ( )
523522 else {
524523 continue ;
525524 } ;
526- assert_eq ! ( new_owner, "" ) ; // We enforce that in the matching rule
525+ debug_assert ! ( new_owner. is_none( ) ) ; // We enforce that in the matching rule
526+ let old_owner = old_owner
527+ . as_ref ( )
528+ . expect ( "A disconnected client requires an old_owner" ) ;
527529 if let Some ( session) = self . session_from_sender ( & old_owner) . await {
528530 match session. close ( ) . await {
529531 Ok ( _) => tracing:: info!(
0 commit comments