diff options
| author | Michael Biebl <biebl@debian.org> | 2025-02-12 13:46:55 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2025-02-12 13:46:55 +0100 |
| commit | ec170f43021cdc93a65151f4646875cd3aa42a13 (patch) | |
| tree | edd6f226af21951b7b4ae1954308594413610513 /src/libnm-client-impl/nm-ip-config.c | |
| parent | d5d9f6796c16f29776c619f464811917e46521f4 (diff) | |
| parent | 8bdf070ff046f482f6eb5e2b15ebc216f5d1e3da (diff) | |
Update upstream source from tag 'upstream/1.51.90'
Update to upstream version '1.51.90' with Debian dir 5ed61494ac9853892cd39fb1e4debd23f234a5b9
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) |