@@ -415,10 +415,10 @@ impl Service {
415415 . await ?;
416416
417417 // Discover existing keyrings
418- let discovered_keyrings = service. discover_keyrings ( secret) . await ?;
418+ let discovered_keyrings = service. discover_keyrings ( secret. clone ( ) ) . await ?;
419419
420420 service
421- . initialize ( connection, discovered_keyrings, true )
421+ . initialize ( connection, discovered_keyrings, secret , true )
422422 . await ?;
423423
424424 // Start PAM listener
@@ -458,7 +458,7 @@ impl Service {
458458 )
459459 . await ?;
460460
461- let default_keyring = if let Some ( secret) = secret {
461+ let default_keyring = if let Some ( secret) = secret. clone ( ) {
462462 vec ! [ (
463463 "Login" . to_owned( ) ,
464464 oo7:: dbus:: Service :: DEFAULT_COLLECTION . to_owned( ) ,
@@ -469,7 +469,7 @@ impl Service {
469469 } ;
470470
471471 service
472- . initialize ( connection, default_keyring, false )
472+ . initialize ( connection, default_keyring, secret , false )
473473 . await ?;
474474 Ok ( service)
475475 }
@@ -686,6 +686,7 @@ impl Service {
686686 & self ,
687687 connection : zbus:: Connection ,
688688 mut discovered_keyrings : Vec < ( String , String , Keyring ) > , // (name, alias, keyring)
689+ secret : Option < Secret > ,
689690 auto_create_default : bool ,
690691 ) -> Result < ( ) , Error > {
691692 self . connection . set ( connection. clone ( ) ) . unwrap ( ) ;
@@ -701,19 +702,32 @@ impl Service {
701702 if !has_default && auto_create_default {
702703 tracing:: info!( "No default collection found, creating 'Login' keyring" ) ;
703704
704- let locked_keyring = LockedKeyring :: open ( Self :: LOGIN_ALIAS )
705- . await
706- . inspect_err ( |e| {
707- tracing:: error!( "Failed to create default Login keyring: {}" , e) ;
708- } ) ?;
705+ let keyring = if let Some ( secret) = secret {
706+ UnlockedKeyring :: open ( Self :: LOGIN_ALIAS , secret)
707+ . await
708+ . map ( Keyring :: Unlocked )
709+ } else {
710+ LockedKeyring :: open ( Self :: LOGIN_ALIAS )
711+ . await
712+ . map ( Keyring :: Locked )
713+ } ;
714+
715+ let keyring = keyring. inspect_err ( |e| {
716+ tracing:: error!( "Failed to create default Login keyring: {}" , e) ;
717+ } ) ?;
709718
719+ let is_locked = if keyring. is_locked ( ) {
720+ "locked"
721+ } else {
722+ "unlocked"
723+ } ;
710724 discovered_keyrings. push ( (
711725 "Login" . to_owned ( ) ,
712726 oo7:: dbus:: Service :: DEFAULT_COLLECTION . to_owned ( ) ,
713- Keyring :: Locked ( locked_keyring ) ,
727+ keyring ,
714728 ) ) ;
715729
716- tracing:: info!( "Created default 'Login' collection (locked)" ) ;
730+ tracing:: info!( "Created default 'Login' collection ({})" , is_locked ) ;
717731 }
718732
719733 // Set up discovered collections
0 commit comments