about summary refs log tree commit diff
path: root/src/nm-ip6-config.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2015-12-24 00:25:15 +0100
committerMichael Biebl <biebl@debian.org>2015-12-24 00:25:15 +0100
commit95fc418c29eaf71c43ee0dddc4515580b9ec1461 (patch)
treec785190da048e63173bd573d7e8c565f3d28488d /src/nm-ip6-config.c
parent46654959ce8acc3b92a92e931920365c3b2dab0d (diff)
parent54f6333410ffd570e62717d9e77c5c987175e397 (diff)
Merge tag 'upstream/1.0.10'
Upstream version 1.0.10
Diffstat (limited to 'src/nm-ip6-config.c')
-rw-r--r--src/nm-ip6-config.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c
index ef256231..f68c4339 100644
--- a/src/nm-ip6-config.c
+++ b/src/nm-ip6-config.c
@@ -35,6 +35,7 @@
 #include "nm-route-manager.h"
 #include "NetworkManagerUtils.h"
 #include "nm-macros-internal.h"
+#include "nm-core-internal.h"
 
 G_DEFINE_TYPE (NMIP6Config, nm_ip6_config, G_TYPE_OBJECT)
 
@@ -1553,16 +1554,31 @@ void
 nm_ip6_config_add_search (NMIP6Config *config, const char *new)
 {
 	NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (config);
-	int i;
+	char *search;
+	size_t len;
 
 	g_return_if_fail (new != NULL);
 	g_return_if_fail (new[0] != '\0');
 
-	for (i = 0; i < priv->searches->len; i++)
-		if (!g_strcmp0 (g_ptr_array_index (priv->searches, i), new))
-			return;
+	search = g_strdup (new);
+
+	/* Remove trailing dot as it has no effect */
+	len = strlen (search);
+	if (search[len - 1] == '.')
+		search[len - 1] = 0;
+
+	if (!search[0]) {
+		g_free (search);
+		return;
+	}
+
+	if (_nm_utils_strv_find_first ((char **) priv->searches->pdata,
+	                               priv->searches->len, search) >= 0) {
+		g_free (search);
+		return;
+	}
 
-	g_ptr_array_add (priv->searches, g_strdup (new));
+	g_ptr_array_add (priv->searches, search);
 	_NOTIFY (config, PROP_SEARCHES);
 }