broadband-bearer,modem-helpers: don't use or match disabled profiles

When matching profiles ignore disabled ones. When activating a
specific profile index, return an error if that profile is marked
as disabled.

Signed-off-by: Dan Williams <dan@ioncontrol.co>
This commit is contained in:
Dan Williams
2025-05-08 18:14:24 -05:00
parent 4b0d3b7147
commit 4d2d01b2c6
2 changed files with 13 additions and 1 deletions
+7 -1
View File
@@ -634,7 +634,13 @@ select_profile_3gpp_get_profile_ready (MMIfaceModem3gppProfileManager *modem,
profile = mm_iface_modem_3gpp_profile_manager_get_profile_finish (modem, res, &error);
if (!profile)
g_task_return_error (task, error);
else
else if (!mm_3gpp_profile_get_enabled (profile)) {
g_task_return_new_error (task,
MM_CORE_ERROR,
MM_CORE_ERROR_FAILED,
"Profile '%d' is internally disabled",
ctx->profile_id);
} else
g_task_return_int (task, ctx->profile_id);
g_object_unref (task);
}
+6
View File
@@ -1677,6 +1677,12 @@ mm_3gpp_profile_list_find_best (GList *profile_list,
continue;
}
/* Never select disabled profiles */
if (!mm_3gpp_profile_get_enabled (iter_profile)) {
mm_obj_dbg (log_object, "skipping context at profile %d: disabled", iter_profile_id);
continue;
}
/* Always prefer an exact match; compare all supported fields except for profile id */
if (mm_3gpp_profile_cmp (iter_profile, requested, cmp_apn, cmp_flags)) {
mm_obj_dbg (log_object, "found exact context at profile %d", iter_profile_id);