Hi,
On Wed, 2014-09-17 at 15:28 +0300, Jukka Rissanen wrote:
From: Andreas Hartmetz ahartm...@gmail.com
- Make sure to insert them with the enabled flag set. No need to
touch the flag afterwards. When they are not supposed to be used,
they are removed entirely anyway.
Once upon a time the fallback nameservers were added at startup and
never removed. Instead the enabled flag was toggled. There may lurk some
other bugs here though.
- Insert the fallbacks also when taking some service offline.
As I understand it, the fallbacks are for all cases where there is
no other nameserver, including with everything ConnMan knows about
disconnected. It may or may not have originally been meant that way,
in any case it's what we need in our current project.
---
Hi,
sending this to ml on behalf of Andreas so that the patch is not lost.
Cheers,
Jukka
src/dnsproxy.c | 5 +
src/service.c | 1 +
2 files changed, 6 insertions(+)
diff --git a/src/dnsproxy.c b/src/dnsproxy.c
index 741cd45..ba1bd1e 100644
--- a/src/dnsproxy.c
+++ b/src/dnsproxy.c
@@ -2603,6 +2603,7 @@ static struct server_data *create_server(int index,
if (protocol == IPPROTO_UDP) {
if (__connman_service_index_is_default(data-index) ||
+ data-index 0 ||
__connman_service_index_is_split_routing(
data-index)) {
data-enabled = true;
@@ -2788,6 +2789,10 @@ static void dnsproxy_offline_mode(bool enabled)
for (list = server_list; list; list = list-next) {
struct server_data *data = list-data;
+ /* fallback nameservers (index 0) are always enabled if
present */
+ if (data-index 0)
+ continue;
+
if (!enabled) {
DBG(Enabling DNS server %s, data-server);
data-enabled = true;
Sorry, I can't wrap my head around these. Once offline, there is no
point of having any nameservers enabled as there is no network
connection to the outside world.
diff --git a/src/service.c b/src/service.c
index e284e92..1e2218b 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1048,6 +1048,7 @@ static void update_nameservers(struct connman_service
*service)
case CONNMAN_SERVICE_STATE_FAILURE:
case CONNMAN_SERVICE_STATE_DISCONNECT:
connman_resolver_remove_all(index);
+ connman_resolver_flush();
return;
case CONNMAN_SERVICE_STATE_READY:
case CONNMAN_SERVICE_STATE_ONLINE:
This looks like an unrelated but possible correct fix?
Cheers,
Patrik
___
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman