Send connman mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.01.org/mailman/listinfo/connman
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of connman digest..."
Today's Topics:
1. [PATCH 0/2] Don't export duplicate entries in resolv.conf
(Daniel Wagner)
2. [PATCH 1/2] service: Refactor
__connman_service_nameserver_append (Daniel Wagner)
3. [PATCH 2/2] resolver: Don't export domain or nameserver
duplicates (Daniel Wagner)
----------------------------------------------------------------------
Message: 1
Date: Sat, 27 Apr 2019 14:29:43 +0200
From: Daniel Wagner <[email protected]>
To: [email protected]
Cc: Daniel Wagner <[email protected]>
Subject: [PATCH 0/2] Don't export duplicate entries in resolv.conf
Message-ID: <[email protected]>
Fix bug reports on duplicate entries in resolv.conf (-r/--nodnsproxy)
Daniel Wagner (2):
service: Refactor __connman_service_nameserver_append
resolver: Don't export domain or nameserver duplicates
src/resolver.c | 39 ++++++++++++++++++++++++++++++++++-----
src/service.c | 9 +++++----
2 files changed, 39 insertions(+), 9 deletions(-)
--
2.20.1
------------------------------
Message: 2
Date: Sat, 27 Apr 2019 14:29:44 +0200
From: Daniel Wagner <[email protected]>
To: [email protected]
Cc: Daniel Wagner <[email protected]>
Subject: [PATCH 1/2] service: Refactor
__connman_service_nameserver_append
Message-ID: <[email protected]>
Move nameserver duplicate check down into the if statemenet. This
avoids to check twice if the variable nameserver is not NULL.
---
src/service.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/service.c b/src/service.c
index 1f9b5ba5194d..0c5e647ef8a8 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1175,11 +1175,12 @@ int __connman_service_nameserver_append(struct
connman_service *service,
else
nameservers = service->nameservers;
- for (i = 0; nameservers && nameservers[i]; i++)
- if (g_strcmp0(nameservers[i], nameserver) == 0)
- return -EEXIST;
-
if (nameservers) {
+ for (i = 0; nameservers[i]; i++) {
+ if (g_strcmp0(nameservers[i], nameserver) == 0)
+ return -EEXIST;
+ }
+
len = g_strv_length(nameservers);
nameservers = g_try_renew(char *, nameservers, len + 2);
} else {
--
2.20.1
------------------------------
Message: 3
Date: Sat, 27 Apr 2019 14:29:45 +0200
From: Daniel Wagner <[email protected]>
To: [email protected]
Cc: Daniel Wagner <[email protected]>
Subject: [PATCH 2/2] resolver: Don't export domain or nameserver
duplicates
Message-ID: <[email protected]>
Track exported elements and do not append the same domain or
nameserver twice.
connman_resolver_append() is called several times during connection
bring up and might include domains or nameserver already in the
resolvfile_list. This happens for example if two interfaces are
brought up which happend to have the same
configuration (e.g. nameserver 8.8.8.8).
connmand[9080]: enp4s0 {newlink} index 2 operstate 6 <UP>
connmand[9080]: src/resolver.c:connman_resolver_append() index 2 domain (null)
server 192.168.154.1
connmand[9080]: src/resolver.c:append_resolver() index 2 domain (null) server
192.168.154.1 lifetime 0 flags 0
connmand[9080]: src/resolver.c:__connman_resolvfile_append() index 2 domain
(null) server 192.168.154.1
connmand[9080]: Cannot create /var/run/connman/resolv.conf falling back to
/etc/resolv.conf
connmand[9080]: src/resolver.c:connman_resolver_append() index 2 domain lan
server (null)
connmand[9080]: src/resolver.c:append_resolver() index 2 domain lan server
(null) lifetime 0 flags 0
connmand[9080]: src/resolver.c:__connman_resolvfile_append() index 2 domain lan
server (null)
connmand[9080]: Setting hostname to beryllium
connmand[9080]: Setting domainname to lan
connmand[9080]: enp4s0 {add} address 192.168.154.174/24 label enp4s0 family 2
connmand[9080]: src/resolver.c:connman_resolver_remove() index 2 domain (null)
server 192.168.154.1
connmand[9080]: src/resolver.c:__connman_resolvfile_remove() index 2 domain
(null) server 192.168.154.1
connmand[9080]: src/resolver.c:connman_resolver_remove() index 2 domain lan
server (null)
connmand[9080]: src/resolver.c:__connman_resolvfile_remove() index 2 domain lan
server (null)
connmand[9080]: src/resolver.c:connman_resolver_append() index 2 domain (null)
server 192.168.154.1
connmand[9080]: src/resolver.c:append_resolver() index 2 domain (null) server
192.168.154.1 lifetime 0 flags 0
connmand[9080]: src/resolver.c:__connman_resolvfile_append() index 2 domain
(null) server 192.168.154.1
connmand[9080]: src/resolver.c:connman_resolver_append() index 2 domain lan
server (null)
connmand[9080]: src/resolver.c:append_resolver() index 2 domain lan server
(null) lifetime 0 flags 0
connmand[9080]: src/resolver.c:__connman_resolvfile_append() index 2
domain lan server (null)
[...]
connmand[9080]: wlan0 {newlink} index 7 operstate 6 <UP>
connmand[9080]: src/resolver.c:connman_resolver_append() index 7 domain (null)
server 192.168.154.1
connmand[9080]: src/resolver.c:append_resolver() index 7 domain (null) server
192.168.154.1 lifetime 0 flags 0
connmand[9080]: src/resolver.c:__connman_resolvfile_append() index 7 domain
(null) server 192.168.154.1
connmand[9080]: src/resolver.c:connman_resolver_append() index 7 domain lan
server (null)
connmand[9080]: src/resolver.c:append_resolver() index 7 domain lan server
(null) lifetime 0 flags 0
connmand[9080]: src/resolver.c:__connman_resolvfile_append() index 7 domain lan
server (null)
---
src/resolver.c | 39 ++++++++++++++++++++++++++++++++++-----
1 file changed, 34 insertions(+), 5 deletions(-)
diff --git a/src/resolver.c b/src/resolver.c
index 10121aa52bda..618353fd6553 100644
--- a/src/resolver.c
+++ b/src/resolver.c
@@ -83,9 +83,22 @@ static void resolvfile_remove_entries(GList *entries)
g_list_free(entries);
}
-static int resolvfile_export(void)
+static bool already_exported(GList *export_list, const char *str)
{
GList *list;
+
+ for (list = export_list; list; list = g_list_next(list)) {
+ const char *str0 = list->data;
+ if (g_strcmp0(str0, str) == 0)
+ return true;
+ }
+
+ return false;
+}
+
+static int resolvfile_export(void)
+{
+ GList *list, *export_list;
GString *content;
int fd, err;
unsigned int count;
@@ -99,6 +112,7 @@ static int resolvfile_export(void)
* MAXDNSRCH/MAXNS entries are used.
*/
+ export_list = NULL;
for (count = 0, list = g_list_first(resolvfile_list);
list && (count < MAXDNSRCH);
list = g_list_next(list)) {
@@ -107,16 +121,25 @@ static int resolvfile_export(void)
if (!entry->domain)
continue;
+ if (already_exported(export_list, entry->domain))
+ continue;
+
if (count == 0)
g_string_append_printf(content, "search ");
g_string_append_printf(content, "%s ", entry->domain);
+
+ export_list = g_list_append(export_list, entry->domain);
+
count++;
}
+ g_list_free(export_list);
+
if (count)
g_string_append_printf(content, "\n");
+ export_list = NULL;
for (count = 0, list = g_list_first(resolvfile_list);
list && (count < MAXNS);
list = g_list_next(list)) {
@@ -125,10 +148,16 @@ static int resolvfile_export(void)
if (!entry->server)
continue;
- g_string_append_printf(content, "nameserver %s\n",
- entry->server);
+ if (already_exported(export_list, entry->server))
+ continue;
+
+ g_string_append_printf(content, "nameserver %s\n",
entry->server);
+
+ export_list = g_list_append(export_list, entry->server);
+
count++;
}
+ g_list_free(export_list);
old_umask = umask(022);
@@ -172,7 +201,7 @@ int __connman_resolvfile_append(int index, const char
*domain,
{
struct resolvfile_entry *entry;
- DBG("index %d server %s", index, server);
+ DBG("index %d domain %s server %s", index, domain, server);
if (index < 0)
return -ENOENT;
@@ -195,7 +224,7 @@ int __connman_resolvfile_remove(int index, const char
*domain,
{
GList *list, *matches = NULL;
- DBG("index %d server %s", index, server);
+ DBG("index %d domain %s server %s", index, domain, server);
for (list = resolvfile_list; list; list = g_list_next(list)) {
struct resolvfile_entry *entry = list->data;
--
2.20.1
------------------------------
Subject: Digest Footer
_______________________________________________
connman mailing list
[email protected]
https://lists.01.org/mailman/listinfo/connman
------------------------------
End of connman Digest, Vol 42, Issue 24
***************************************