diff options
Diffstat (limited to 'src/nm-ip6-config.c')
| -rw-r--r-- | src/nm-ip6-config.c | 26 |
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); } |