diff options
author | Carlo Lobrano <c.lobrano@gmail.com> | 2022-07-14 10:34:57 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-07-15 11:18:36 +0000 |
commit | 85d4ad11580d52375675db81a4cb3799d43a89f8 (patch) | |
tree | 6d571e7db93b613d9679a3104305161a723b6ea9 /src | |
parent | 249e46a70a84290ff0be2b0ba74c27119be6ec87 (diff) |
mm-iface-modem-3gpp-profile-manager: do not try to deactivate unused profile
'mm_3gpp_profile_list_find_best' can return an unused profile ID, which
is later tested for being already activated in
'profile_manager_check_activated_profile_ready' with +GCACT?. Since the
profile does not exist, this check always fails, but the profile manager
still tries to deactivate it, which is unnecessary.
This change checks the return error from 'check_activated_profile' and skips
SET_PROFILE_STEP_DEACTIVATE_PROFILE step if error is
MM_CORE_ERROR_NOT_FOUND.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-iface-modem-3gpp-profile-manager.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/mm-iface-modem-3gpp-profile-manager.c b/src/mm-iface-modem-3gpp-profile-manager.c index cf32e197..67601ada 100644 --- a/src/mm-iface-modem-3gpp-profile-manager.c +++ b/src/mm-iface-modem-3gpp-profile-manager.c @@ -306,10 +306,14 @@ profile_manager_check_activated_profile_ready (MMIfaceModem3gppProfileManager *s ctx = g_task_get_task_data (task); if (!MM_IFACE_MODEM_3GPP_PROFILE_MANAGER_GET_INTERFACE (self)->check_activated_profile_finish (self, res, &activated, &error)) { - mm_obj_dbg (self, "couldn't check if profile '%s' is activated: %s", ctx->index_field_value_str, error->message); - ctx->step = SET_PROFILE_STEP_DEACTIVATE_PROFILE; - } - else if (activated) { + if (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_NOT_FOUND)) { + mm_obj_dbg (self, "profile '%s' is not activated: %s", ctx->index_field_value_str, error->message); + ctx->step = SET_PROFILE_STEP_STORE_PROFILE; + } else { + mm_obj_dbg (self, "couldn't check if profile '%s' is activated: %s", ctx->index_field_value_str, error->message); + ctx->step = SET_PROFILE_STEP_DEACTIVATE_PROFILE; + } + } else if (activated) { mm_obj_dbg (self, "profile '%s' is activated", ctx->index_field_value_str); ctx->step = SET_PROFILE_STEP_DEACTIVATE_PROFILE; } else { |