diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2022-05-20 14:16:17 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-05-25 11:14:40 +0200 |
commit | 012303013699bf23fde74a3ecb067c5c3a011554 (patch) | |
tree | 510850897dacff17915b6547886778697cc28146 | |
parent | fe91a3044d55fcb354630d92dcfe723279a612eb (diff) |
iface-modem: skip setting up carrier config on esim without profiles
-rw-r--r-- | src/mm-base-sim.c | 6 | ||||
-rw-r--r-- | src/mm-base-sim.h | 2 | ||||
-rw-r--r-- | src/mm-iface-modem.c | 15 |
3 files changed, 15 insertions, 8 deletions
diff --git a/src/mm-base-sim.c b/src/mm-base-sim.c index 16cdd505..71852339 100644 --- a/src/mm-base-sim.c +++ b/src/mm-base-sim.c @@ -85,6 +85,12 @@ static guint signals[SIGNAL_LAST] = { 0 }; #define IS_ESIM_WITHOUT_PROFILES(self) \ (IS_ESIM (self) && (mm_gdbus_sim_get_esim_status (MM_GDBUS_SIM (self)) == MM_SIM_ESIM_STATUS_NO_PROFILES)) +gboolean +mm_base_sim_is_esim_without_profiles (MMBaseSim *self) +{ + return IS_ESIM_WITHOUT_PROFILES (self); +} + /*****************************************************************************/ void diff --git a/src/mm-base-sim.h b/src/mm-base-sim.h index 8eb393f7..6be520fd 100644 --- a/src/mm-base-sim.h +++ b/src/mm-base-sim.h @@ -254,4 +254,6 @@ gchar *mm_base_sim_load_sim_identifier_finish (MMBaseSim *self, gboolean mm_base_sim_is_emergency_number (MMBaseSim *self, const gchar *number); +gboolean mm_base_sim_is_esim_without_profiles (MMBaseSim *self); + #endif /* MM_BASE_SIM_H */ diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index d4d406a8..02849048 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -5960,8 +5960,8 @@ interface_initialization_step (GTask *task) if (!mm_iface_modem_is_cdma_only (self) && MM_IFACE_MODEM_GET_INTERFACE (self)->setup_carrier_config && MM_IFACE_MODEM_GET_INTERFACE (self)->setup_carrier_config_finish) { - MMBaseSim *sim = NULL; - gchar *carrier_config_mapping = NULL; + g_autoptr(MMBaseSim) sim = NULL; + g_autofree gchar *carrier_config_mapping = NULL; g_object_get (self, MM_IFACE_MODEM_SIM, &sim, @@ -5972,26 +5972,25 @@ interface_initialization_step (GTask *task) * validate whether we're already using the best config or not. */ if (!sim) mm_obj_dbg (self, "not setting up carrier config: SIM not found"); + else if (!mm_base_sim_is_esim_without_profiles (sim)) + mm_obj_dbg (self, "not setting up carrier config: eSIM without profiles"); else if (!carrier_config_mapping) mm_obj_dbg (self, "not setting up carrier config: mapping file not configured"); else { const gchar *imsi; imsi = mm_gdbus_sim_get_imsi (MM_GDBUS_SIM (sim)); - if (imsi) { + if (!imsi) + mm_obj_dbg (self, "not setting up carrier config: unknown IMSI"); + else { MM_IFACE_MODEM_GET_INTERFACE (self)->setup_carrier_config (self, imsi, carrier_config_mapping, (GAsyncReadyCallback)setup_carrier_config_ready, task); - g_object_unref (sim); - g_free (carrier_config_mapping); return; } - mm_obj_warn (self, "couldn't setup carrier config: unknown IMSI"); } - g_clear_object (&sim); - g_free (carrier_config_mapping); } ctx->step++; /* fall-through */ |