From 670044fa56bfc807eac91d1320c85fd7aba8dfe3 Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Mon, 16 Sep 2019 14:51:16 +1000 Subject: [PATCH] Ensure the backend receives the latest settings object before starting the onion service, and likewise for the GUI, so that we absolutely always save the private key for persistence back to the json settings file when we need to --- onionshare/onion.py | 4 ++++ onionshare_gui/server_status.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/onionshare/onion.py b/onionshare/onion.py index 2f4ddffd..b0499449 100644 --- a/onionshare/onion.py +++ b/onionshare/onion.py @@ -438,6 +438,10 @@ class Onion(object): return the onion hostname. """ self.common.log('Onion', 'start_onion_service') + # Settings may have changed in the frontend but not updated in our settings object, + # such as persistence. Reload the settings now just to be sure. + self.settings.load() + self.auth_string = None if not self.supports_ephemeral: diff --git a/onionshare_gui/server_status.py b/onionshare_gui/server_status.py index 3a6e31cc..dbcc6ca8 100644 --- a/onionshare_gui/server_status.py +++ b/onionshare_gui/server_status.py @@ -240,6 +240,9 @@ class ServerStatus(QtWidgets.QWidget): """ # Set the URL fields if self.status == self.STATUS_STARTED: + # The backend Onion may have saved new settings, such as the private key. + # Reload the settings before saving new ones. + self.common.settings.load() self.show_url() if self.common.settings.get('save_private_key'):