@@ -51,6 +51,7 @@ class RemoteClient:
5151 followerTransport : Optional [RelayTransport ]
5252 localControlServer : Optional [server .LocalRelayServer ]
5353 sendingKeys : bool
54+ sdHandler : SecureDesktopHandler | None
5455
5556 def __init__ (
5657 self ,
@@ -72,14 +73,19 @@ def __init__(
7273 self .localControlServer = None
7374 self .sendingKeys = False
7475 self ._wasSendingKeysBeforeLock : bool = False
75- self .sdHandler = SecureDesktopHandler ()
76- if isRunningOnSecureDesktop ():
77- connection = self .sdHandler .initializeSecureDesktop ()
78- if connection :
79- self .connectAsFollower (connection )
80- self .followerSession .transport .connectedEvent .wait (
81- self .sdHandler .SD_CONNECT_BLOCK_TIMEOUT ,
82- )
76+ try :
77+ self .sdHandler = SecureDesktopHandler ()
78+ except RuntimeError :
79+ log .error ("Failed to initialise the secure desktop handler." , exc_info = True )
80+ self .sdHandler = None
81+ else :
82+ if isRunningOnSecureDesktop ():
83+ connection = self .sdHandler .initializeSecureDesktop ()
84+ if connection :
85+ self .connectAsFollower (connection )
86+ self .followerSession .transport .connectedEvent .wait (
87+ self .sdHandler .SD_CONNECT_BLOCK_TIMEOUT ,
88+ )
8389 core .postNvdaStartup .register (self .performAutoconnect )
8490 inputCore .decide_handleRawKey .register (self .processKeyInput )
8591
@@ -103,7 +109,8 @@ def performAutoconnect(self):
103109 self .connect (conInfo )
104110
105111 def terminate (self ):
106- self .sdHandler .terminate ()
112+ if self .sdHandler is not None :
113+ self .sdHandler .terminate ()
107114 self .disconnect ()
108115 self .localMachine .terminate ()
109116 self .localMachine = None
@@ -277,7 +284,8 @@ def disconnectAsFollower(self):
277284 self .followerSession .close ()
278285 self .followerSession = None
279286 self .followerTransport = None
280- self .sdHandler .followerSession = None
287+ if self .sdHandler is not None :
288+ self .sdHandler .followerSession = None
281289 if self .menu :
282290 self .menu .handleConnected (ConnectionMode .FOLLOWER , False )
283291 self ._connecting = False
@@ -405,7 +413,8 @@ def connectAsFollower(self, connectionInfo: ConnectionInfo):
405413 transport = transport ,
406414 localMachine = self .localMachine ,
407415 )
408- self .sdHandler .followerSession = self .followerSession
416+ if self .sdHandler is not None :
417+ self .sdHandler .followerSession = self .followerSession
409418 self .followerTransport = transport
410419 transport .transportCertificateAuthenticationFailed .register (
411420 self .onFollowerCertificateFailed ,
0 commit comments