about summary refs log tree commit diff
path: root/src/libnm-client-impl/nm-ip-config.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2025-02-12 13:46:55 +0100
committerMichael Biebl <biebl@debian.org>2025-02-12 13:46:55 +0100
commitec170f43021cdc93a65151f4646875cd3aa42a13 (patch)
treeedd6f226af21951b7b4ae1954308594413610513 /src/libnm-client-impl/nm-ip-config.c
parentd5d9f6796c16f29776c619f464811917e46521f4 (diff)
parent8bdf070ff046f482f6eb5e2b15ebc216f5d1e3da (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.c21
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)