diff options
| author | Michael Biebl <biebl@debian.org> | 2025-02-12 13:46:50 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2025-02-12 13:46:50 +0100 |
| commit | 8bdf070ff046f482f6eb5e2b15ebc216f5d1e3da (patch) | |
| tree | f706478d189d54c6532e8863d4b0d5ff5575af60 /src/libnm-client-impl/nm-ip-config.c | |
| parent | 818258cf34b83fbc754633295e1052d4752d7b15 (diff) | |
New upstream version 1.51.90 upstream/1.51.90
Diffstat (limited to 'src/libnm-client-impl/nm-ip-config.c')
| -rw-r--r-- | src/libnm-client-impl/nm-ip-config.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/libnm-client-impl/nm-ip-config.c b/src/libnm-client-impl/nm-ip-config.c index c054f2cc..ad5f08f8 100644 --- a/src/libnm-client-impl/nm-ip-config.c +++ b/src/libnm-client-impl/nm-ip-config.c @@ -166,25 +166,32 @@ _notify_update_prop_nameservers(NMClient *client, g_variant_iter_init(&iter, value); while (g_variant_iter_next(&iter, "a{sv}", &iter_v)) { - const char *key; - GVariant *val; + const char *key; + GVariant *val; + gs_free char *nameserver = NULL; while (g_variant_iter_next(iter_v, "{&sv}", &key, &val)) { - if (nm_streq(key, "address")) { + if (nm_streq(key, "address") && !nameserver) { gs_free char *val_str = NULL; if (!g_variant_is_of_type(val, G_VARIANT_TYPE_STRING)) goto next; if (!nm_inet_parse_str(AF_INET, g_variant_get_string(val, NULL), &val_str)) goto next; - if (!arr) - arr = g_ptr_array_new(); - g_ptr_array_add(arr, g_steal_pointer(&val_str)); - goto next; + nameserver = g_steal_pointer(&val_str); + } else if (nm_streq(key, "uri")) { + nameserver = g_variant_dup_string(val, NULL); } next: g_variant_unref(val); } + + if (nameserver) { + if (!arr) + arr = g_ptr_array_new(); + g_ptr_array_add(arr, g_steal_pointer(&nameserver)); + } + g_variant_iter_free(iter_v); } if (arr && arr->len > 0) |