diff options
author | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-05-24 16:25:02 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-05-28 17:00:46 +0300 |
commit | 8a494c57ceba6c98ff89a4af2e50f32b8ad85cf5 (patch) | |
tree | a93348ba4ae9333e552c2338261bc013346b36a5 /src | |
parent | 1f854740a04fad3f36ac912514c48d59ca6cffec (diff) | |
download | connman-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.c | 17 |
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); |