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:24:58 +0100
committerMichael Biebl <biebl@debian.org>2015-12-24 00:24:58 +0100
commit54f6333410ffd570e62717d9e77c5c987175e397 (patch)
treed0698cc29d0f53c0b6d2c68d35ee2e9d72153948 /src/nm-ip6-config.c
parenta6ece1a2aa19a6268335c87d4fdef20123dd04a5 (diff)
Imported Upstream version 1.0.10 upstream/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);
 }