| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/dns/dns_config_service_posix.h" | 5 #include "net/dns/dns_config_service_posix.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "net/dns/dns_hosts.h" | 23 #include "net/dns/dns_hosts.h" |
| 24 #include "net/dns/dns_protocol.h" | 24 #include "net/dns/dns_protocol.h" |
| 25 #include "net/dns/notify_watcher_mac.h" | 25 #include "net/dns/notify_watcher_mac.h" |
| 26 #include "net/dns/serial_worker.h" | 26 #include "net/dns/serial_worker.h" |
| 27 | 27 |
| 28 #if defined(OS_MACOSX) && !defined(OS_IOS) | 28 #if defined(OS_MACOSX) && !defined(OS_IOS) |
| 29 #include "net/dns/dns_config_watcher_mac.h" | 29 #include "net/dns/dns_config_watcher_mac.h" |
| 30 #endif | 30 #endif |
| 31 | 31 |
| 32 #if defined(OS_ANDROID) | 32 #if defined(OS_ANDROID) |
| 33 #include <sys/system_properties.h> | 33 #include "base/android/java_system.h" |
| 34 #include "net/base/network_change_notifier.h" | 34 #include "net/base/network_change_notifier.h" |
| 35 #endif | 35 #endif |
| 36 | 36 |
| 37 namespace net { | 37 namespace net { |
| 38 | 38 |
| 39 namespace internal { | 39 namespace internal { |
| 40 | 40 |
| 41 namespace { | 41 namespace { |
| 42 | 42 |
| 43 #if !defined(OS_ANDROID) | 43 #if !defined(OS_ANDROID) |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 config->unhandled_options = true; | 147 config->unhandled_options = true; |
| 148 default: | 148 default: |
| 149 return error; | 149 return error; |
| 150 } | 150 } |
| 151 #endif // defined(OS_MACOSX) && !defined(OS_IOS) | 151 #endif // defined(OS_MACOSX) && !defined(OS_IOS) |
| 152 // Override timeout value to match default setting on Windows. | 152 // Override timeout value to match default setting on Windows. |
| 153 config->timeout = base::TimeDelta::FromSeconds(kDnsTimeoutSeconds); | 153 config->timeout = base::TimeDelta::FromSeconds(kDnsTimeoutSeconds); |
| 154 return result; | 154 return result; |
| 155 } | 155 } |
| 156 #else // defined(OS_ANDROID) | 156 #else // defined(OS_ANDROID) |
| 157 // Theoretically, this is bad. __system_property_get is not a supported API | 157 // Theoretically, this is bad. The DNS system properties are implementation |
| 158 // (but it's currently visible to anyone using Bionic), and the properties | 158 // details that may disappear in future Android releases. Practically, the DNS |
| 159 // are implementation details that may disappear in future Android releases. | 159 // code (and its clients) are already robust against failing to get the DNS |
| 160 // Practically, libcutils provides property_get, which is a public API, and the | |
| 161 // DNS code (and its clients) are already robust against failing to get the DNS | |
| 162 // config for whatever reason, so the properties can disappear and the world | 160 // config for whatever reason, so the properties can disappear and the world |
| 163 // won't end. | 161 // won't end. |
| 164 // TODO(ttuttle): Depend on libcutils, then switch this (and other uses of | |
| 165 // __system_property_get) to property_get. | |
| 166 ConfigParsePosixResult ReadDnsConfig(DnsConfig* dns_config) { | 162 ConfigParsePosixResult ReadDnsConfig(DnsConfig* dns_config) { |
| 167 std::string dns1_string, dns2_string; | 163 std::string dns1_string = base::android::JavaSystem::GetProperty("net.dns1"); |
| 168 char property_value[PROP_VALUE_MAX]; | 164 std::string dns2_string = base::android::JavaSystem::GetProperty("net.dns2"); |
| 169 __system_property_get("net.dns1", property_value); | |
| 170 dns1_string = property_value; | |
| 171 __system_property_get("net.dns2", property_value); | |
| 172 dns2_string = property_value; | |
| 173 if (dns1_string.length() == 0 && dns2_string.length() == 0) | 165 if (dns1_string.length() == 0 && dns2_string.length() == 0) |
| 174 return CONFIG_PARSE_POSIX_NO_NAMESERVERS; | 166 return CONFIG_PARSE_POSIX_NO_NAMESERVERS; |
| 175 | 167 |
| 176 IPAddressNumber dns1_number, dns2_number; | 168 IPAddressNumber dns1_number, dns2_number; |
| 177 bool parsed1 = ParseIPLiteralToNumber(dns1_string, &dns1_number); | 169 bool parsed1 = ParseIPLiteralToNumber(dns1_string, &dns1_number); |
| 178 bool parsed2 = ParseIPLiteralToNumber(dns2_string, &dns2_number); | 170 bool parsed2 = ParseIPLiteralToNumber(dns2_string, &dns2_number); |
| 179 if (!parsed1 && !parsed2) | 171 if (!parsed1 && !parsed2) |
| 180 return CONFIG_PARSE_POSIX_BAD_ADDRESS; | 172 return CONFIG_PARSE_POSIX_BAD_ADDRESS; |
| 181 | 173 |
| 182 if (parsed1) { | 174 if (parsed1) { |
| (...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 #endif // defined(OS_ANDROID) | 540 #endif // defined(OS_ANDROID) |
| 549 | 541 |
| 550 } // namespace internal | 542 } // namespace internal |
| 551 | 543 |
| 552 // static | 544 // static |
| 553 scoped_ptr<DnsConfigService> DnsConfigService::CreateSystemService() { | 545 scoped_ptr<DnsConfigService> DnsConfigService::CreateSystemService() { |
| 554 return scoped_ptr<DnsConfigService>(new internal::DnsConfigServicePosix()); | 546 return scoped_ptr<DnsConfigService>(new internal::DnsConfigServicePosix()); |
| 555 } | 547 } |
| 556 | 548 |
| 557 } // namespace net | 549 } // namespace net |
| OLD | NEW |