summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2010-07-23 17:47:24 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2010-07-26 12:21:21 +0200
commita7410b7b879e3875096f33452506fa521e0b3917 (patch)
tree123479487c65c9a30146e82b5cfc6f9df8476e19 /src
parent06cf2e1b5bd7368b6dbcd7708c066a892a1c2114 (diff)
downloadconnman-a7410b7b879e3875096f33452506fa521e0b3917.tar.gz
connman-a7410b7b879e3875096f33452506fa521e0b3917.tar.bz2
connman-a7410b7b879e3875096f33452506fa521e0b3917.zip
Add a resolver flush method
The flush method sends any pending resolving requests. A resolver can queue requests to some pending list when e.g. it knows ConnMan is offline.
Diffstat (limited to 'src')
-rw-r--r--src/resolver.c21
-rw-r--r--src/service.c2
2 files changed, 23 insertions, 0 deletions
diff --git a/src/resolver.c b/src/resolver.c
index 5caf7a85..f3faacdf 100644
--- a/src/resolver.c
+++ b/src/resolver.c
@@ -291,6 +291,27 @@ int connman_resolver_remove_public_server(const char *server)
return connman_resolver_remove(NULL, NULL, server);
}
+/**
+ * connman_resolver_flush:
+ *
+ * Flush pending resolver requests
+ */
+void connman_resolver_flush(void)
+{
+ GSList *list;
+
+ for (list = resolver_list; list; list = list->next) {
+ struct connman_resolver *resolver = list->data;
+
+ if (resolver->flush == NULL)
+ continue;
+
+ resolver->flush();
+ }
+
+ return;
+}
+
static int selftest_append(const char *interface, const char *domain,
const char *server)
{
diff --git a/src/service.c b/src/service.c
index d1309587..038d1a08 100644
--- a/src/service.c
+++ b/src/service.c
@@ -340,6 +340,8 @@ static void update_nameservers(struct connman_service *service)
service->nameservers[i]);
} else if (service->nameserver != NULL)
connman_resolver_append(ifname, NULL, service->nameserver);
+
+ connman_resolver_flush();
}
void __connman_service_append_nameserver(struct connman_service *service,