[epiphany/wip/sync: 4/11] sync-service: Handle case when trying to destroy a session with missing sessionToken due to a sign i
- From: Gabriel Ivașcu <gabrielivascu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/wip/sync: 4/11] sync-service: Handle case when trying to destroy a session with missing sessionToken due to a sign i
- Date: Wed, 19 Apr 2017 17:47:05 +0000 (UTC)
commit cc18249371fbcac981a37e97e5d90e7973d5f059
Author: Gabriel Ivascu <ivascu gabriel59 gmail com>
Date: Fri Apr 14 17:09:09 2017 +0300
sync-service: Handle case when trying to destroy a session with missing sessionToken due to a sign in
error
src/sync/ephy-sync-service.c | 24 +++++++++++++++---------
1 files changed, 15 insertions(+), 9 deletions(-)
---
diff --git a/src/sync/ephy-sync-service.c b/src/sync/ephy-sync-service.c
index b610eca..1aed452 100644
--- a/src/sync/ephy-sync-service.c
+++ b/src/sync/ephy-sync-service.c
@@ -527,7 +527,8 @@ destroy_session_cb (SoupSession *session,
}
static void
-ephy_sync_service_destroy_session (EphySyncService *self)
+ephy_sync_service_destroy_session (EphySyncService *self,
+ const char *sessionToken)
{
SyncCryptoHawkOptions *hoptions;
SyncCryptoHawkHeader *hheader;
@@ -541,7 +542,9 @@ ephy_sync_service_destroy_session (EphySyncService *self)
const char *request_body = "{}";
g_return_if_fail (EPHY_IS_SYNC_SERVICE (self));
- g_return_if_fail (ephy_sync_service_get_secret (self, secrets[SESSION_TOKEN]));
+ if (!sessionToken)
+ sessionToken = ephy_sync_service_get_secret (self, secrets[SESSION_TOKEN]);
+ g_return_if_fail (sessionToken);
url = g_strdup_printf ("%ssession/destroy", MOZILLA_FXA_SERVER_URL);
ephy_sync_crypto_process_session_token (ephy_sync_service_get_secret (self, secrets[SESSION_TOKEN]),
@@ -1256,7 +1259,7 @@ sync_secrets_store_finished_cb (EphySyncService *self,
g_assert (EPHY_IS_SYNC_SERVICE (self));
if (error) {
- ephy_sync_service_destroy_session (self);
+ ephy_sync_service_destroy_session (self, NULL);
g_clear_pointer (&self->user_email, g_free);
g_hash_table_remove_all (self->secrets);
} else {
@@ -1428,13 +1431,14 @@ ephy_sync_service_set_secret (EphySyncService *self,
static void
ephy_sync_service_report_sign_in_error (EphySyncService *self,
const char *message,
+ const char *sessionToken,
gboolean clear_secrets)
{
g_assert (EPHY_IS_SYNC_SERVICE (self));
g_assert (message);
g_signal_emit (self, signals[SIGN_IN_ERROR], 0, message);
- ephy_sync_service_destroy_session (self);
+ ephy_sync_service_destroy_session (self, sessionToken);
if (clear_secrets) {
g_clear_pointer (&self->user_email, g_free);
@@ -1539,7 +1543,7 @@ store_secrets:
ephy_sync_secret_store_secrets (self);
goto out_no_error;
out_error:
- ephy_sync_service_report_sign_in_error (self, _("Failed to retrieve crypto keys."), TRUE);
+ ephy_sync_service_report_sign_in_error (self, _("Failed to retrieve crypto keys."), NULL, TRUE);
out_no_error:
if (bundle)
ephy_sync_crypto_key_bundle_free (bundle);
@@ -1699,7 +1703,7 @@ obtain_crypto_keys:
goto out_no_error;
out_error:
message = message ? message : _("Failed to verify storage version.");
- ephy_sync_service_report_sign_in_error (self, message, TRUE);
+ ephy_sync_service_report_sign_in_error (self, message, NULL, TRUE);
out_no_error:
if (parser)
g_object_unref (parser);
@@ -1738,7 +1742,8 @@ ephy_sync_service_conclude_sign_in (EphySyncService *self,
if (!ephy_sync_crypto_compute_sync_keys (bundle, data->respHMACkey,
data->respXORkey, unwrapKB,
&kA, &kB, TOKEN_LENGTH)) {
- ephy_sync_service_report_sign_in_error (self, _("Failed to retrieve the Sync Key"), FALSE);
+ ephy_sync_service_report_sign_in_error (self, _("Failed to retrieve the Sync Key"),
+ data->sessionToken, FALSE);
goto out;
}
@@ -1810,7 +1815,8 @@ get_account_keys_cb (SoupSession *session,
msg->status_code, msg->response_body->data);
out_error:
- ephy_sync_service_report_sign_in_error (self, _("Failed to retrieve the Sync Key"), FALSE);
+ ephy_sync_service_report_sign_in_error (self, _("Failed to retrieve the Sync Key"),
+ data->sessionToken, FALSE);
sign_in_async_data_free (data);
out_no_error:
if (node)
@@ -1872,7 +1878,7 @@ ephy_sync_service_do_sign_out (EphySyncService *self)
ephy_sync_service_unregister_client_id (self);
ephy_sync_service_stop_periodical_sync (self);
- ephy_sync_service_destroy_session (self);
+ ephy_sync_service_destroy_session (self, NULL);
ephy_sync_service_clear_storage_credentials (self);
ephy_sync_secret_forget_secrets ();
g_hash_table_remove_all (self->secrets);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]