From 4e66f871e58574af7ba13b6af259d4dedf58095e Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 31 Mar 2013 20:23:45 +0200 Subject: [PATCH] Launch the keystore_server on demand from BKeyStore. This allows leaving the keystore_server closed as long as it isn't used and still avoids having to launch it manually. --- src/kits/app/KeyStore.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/kits/app/KeyStore.cpp b/src/kits/app/KeyStore.cpp index c72b87a7a5..58fe5d0da5 100644 --- a/src/kits/app/KeyStore.cpp +++ b/src/kits/app/KeyStore.cpp @@ -9,6 +9,7 @@ #include #include +#include using namespace BPrivate; @@ -416,8 +417,17 @@ BKeyStore::_SendKeyMessage(BMessage& message, BMessage* reply) const reply = &localReply; BMessenger messenger(kKeyStoreServerSignature); - if (!messenger.IsValid()) - return B_ERROR; + if (!messenger.IsValid()) { + // Try to start the keystore server. + status_t result = be_roster->Launch(kKeyStoreServerSignature); + if (result != B_OK && result != B_ALREADY_RUNNING) + return B_ERROR; + + // Then re-target the messenger and check again. + messenger.SetTo(kKeyStoreServerSignature); + if (!messenger.IsValid()) + return B_ERROR; + } if (messenger.SendMessage(&message, reply) != B_OK) return B_ERROR;