wwan/ofono: fix a couple of logic errors in update_connection_list()

- Only consider preferred context of "internet" type. There can be
  multiple preferred contexts of multiple types, and we care about
  "internet" type only.
- Don't check for "internet+mms" type. It turns out that "internet+mms"
  isn't a thing in oFono, and is used to represent "internet" context
  with MMSC in the lomiri-system-setting's UI only.

Fixes: 9fc72bf75d ('wwan/ofono: create connections based on available contexts')
Bug-UBports: https://gitlab.com/ubports/development/core/packaging/network-manager/-/issues/3
(cherry picked from commit 08a38ed619)
This commit is contained in:
Ratchanan Srirattanamet 2023-02-15 15:56:44 +07:00 committed by Thomas Haller
parent 8f796de5e7
commit 0e4e3e5d74
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -734,7 +734,7 @@ update_connection_list(NMModemOfono *self)
g_hash_table_iter_init(&iter, priv->contexts);
while (g_hash_table_iter_next(&iter, (gpointer *) &uuid, (gpointer *) &octx)) {
if (octx->preferred) {
if (octx->preferred && nm_streq(octx->type, "internet")) {
octx_preferred = octx;
break;
}
@ -743,8 +743,7 @@ update_connection_list(NMModemOfono *self)
g_hash_table_iter_init(&iter, priv->contexts);
while (g_hash_table_iter_next(&iter, (gpointer *) &uuid, (gpointer *) &octx)) {
gboolean connection_should_exist =
(!octx_preferred || octx_preferred == octx)
&& (nm_streq(octx->type, "internet") || nm_streq(octx->type, "internet+mms"));
octx_preferred == octx || (!octx_preferred && nm_streq(octx->type, "internet"));
gboolean connection_exists = g_hash_table_contains(priv->connections, uuid);
if (connection_should_exist && !connection_exists) {