Hi,
On Wed, 2014-09-17 at 15:28 +0300, Jukka Rissanen wrote:
> From: Andreas Hartmetz <[email protected]>
>
> - 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
[email protected]
https://lists.connman.net/mailman/listinfo/connman