summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2012-05-24 16:25:02 +0300
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-05-28 17:00:46 +0300
commit8a494c57ceba6c98ff89a4af2e50f32b8ad85cf5 (patch)
treea93348ba4ae9333e552c2338261bc013346b36a5 /src
parent1f854740a04fad3f36ac912514c48d59ca6cffec (diff)
downloadconnman-8a494c57ceba6c98ff89a4af2e50f32b8ad85cf5.tar.gz
connman-8a494c57ceba6c98ff89a4af2e50f32b8ad85cf5.tar.bz2
connman-8a494c57ceba6c98ff89a4af2e50f32b8ad85cf5.zip
service: Proper ordering of nameservers and search domains
The primary nameserver or search domain is the first element in the array. When adding a nameserver or search domain to the resolver, start from the end of the array since the resolver functions expect the most important entry to be the last one appended.
Diffstat (limited to 'src')
-rw-r--r--src/service.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/service.c b/src/service.c
index 7d66a4b3..5d73ba7f 100644
--- a/src/service.c
+++ b/src/service.c
@@ -942,16 +942,20 @@ static void update_nameservers(struct connman_service *service)
remove_nameservers(service, ifname, service->nameservers);
- for (i = 0; service->nameservers_config[i] != NULL; i++) {
+ i = g_strv_length(service->nameservers_config);
+ while (i != 0) {
+ i--;
connman_resolver_append(ifname, NULL,
- service->nameservers_config[i]);
+ service->nameservers_config[i]);
}
} else if (service->nameservers != NULL) {
int i;
- for (i = 0; service->nameservers[i] != NULL; i++) {
+ i = g_strv_length(service->nameservers);
+ while (i != 0) {
+ i--;
connman_resolver_append(ifname, NULL,
- service->nameservers[i]);
+ service->nameservers[i]);
}
}
@@ -962,9 +966,12 @@ static void update_nameservers(struct connman_service *service)
searchdomains[0] = service->domainname;
remove_searchdomains(service, ifname, searchdomains);
- for (i = 0; service->domains[i]; i++)
+ i = g_strv_length(service->domains);
+ while (i != 0) {
+ i--;
connman_resolver_append(ifname, service->domains[i],
NULL);
+ }
} else if (service->domainname != NULL)
connman_resolver_append(ifname, service->domainname, NULL);