| 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 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 for (int i = 0; i < nscount; ++i) { | 404 for (int i = 0; i < nscount; ++i) { |
| 405 IPEndPoint ipe; | 405 IPEndPoint ipe; |
| 406 if (!ipe.FromSockAddr( | 406 if (!ipe.FromSockAddr( |
| 407 reinterpret_cast<const struct sockaddr*>(&addresses[i]), | 407 reinterpret_cast<const struct sockaddr*>(&addresses[i]), |
| 408 sizeof addresses[i])) { | 408 sizeof addresses[i])) { |
| 409 return CONFIG_PARSE_POSIX_BAD_ADDRESS; | 409 return CONFIG_PARSE_POSIX_BAD_ADDRESS; |
| 410 } | 410 } |
| 411 dns_config->nameservers.push_back(ipe); | 411 dns_config->nameservers.push_back(ipe); |
| 412 } | 412 } |
| 413 #elif defined(OS_LINUX) | 413 #elif defined(OS_LINUX) |
| 414 COMPILE_ASSERT(arraysize(res.nsaddr_list) >= MAXNS && | 414 static_assert(arraysize(res.nsaddr_list) >= MAXNS && |
| 415 arraysize(res._u._ext.nsaddrs) >= MAXNS, | 415 arraysize(res._u._ext.nsaddrs) >= MAXNS, |
| 416 incompatible_libresolv_res_state); | 416 "incompatible libresolv res_state"); |
| 417 DCHECK_LE(res.nscount, MAXNS); | 417 DCHECK_LE(res.nscount, MAXNS); |
| 418 // Initially, glibc stores IPv6 in |_ext.nsaddrs| and IPv4 in |nsaddr_list|. | 418 // Initially, glibc stores IPv6 in |_ext.nsaddrs| and IPv4 in |nsaddr_list|. |
| 419 // In res_send.c:res_nsend, it merges |nsaddr_list| into |nsaddrs|, | 419 // In res_send.c:res_nsend, it merges |nsaddr_list| into |nsaddrs|, |
| 420 // but we have to combine the two arrays ourselves. | 420 // but we have to combine the two arrays ourselves. |
| 421 for (int i = 0; i < res.nscount; ++i) { | 421 for (int i = 0; i < res.nscount; ++i) { |
| 422 IPEndPoint ipe; | 422 IPEndPoint ipe; |
| 423 const struct sockaddr* addr = NULL; | 423 const struct sockaddr* addr = NULL; |
| 424 size_t addr_len = 0; | 424 size_t addr_len = 0; |
| 425 if (res.nsaddr_list[i].sin_family) { // The indicator used by res_nsend. | 425 if (res.nsaddr_list[i].sin_family) { // The indicator used by res_nsend. |
| 426 addr = reinterpret_cast<const struct sockaddr*>(&res.nsaddr_list[i]); | 426 addr = reinterpret_cast<const struct sockaddr*>(&res.nsaddr_list[i]); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 #endif // !defined(OS_ANDROID) | 490 #endif // !defined(OS_ANDROID) |
| 491 | 491 |
| 492 } // namespace internal | 492 } // namespace internal |
| 493 | 493 |
| 494 // static | 494 // static |
| 495 scoped_ptr<DnsConfigService> DnsConfigService::CreateSystemService() { | 495 scoped_ptr<DnsConfigService> DnsConfigService::CreateSystemService() { |
| 496 return scoped_ptr<DnsConfigService>(new internal::DnsConfigServicePosix()); | 496 return scoped_ptr<DnsConfigService>(new internal::DnsConfigServicePosix()); |
| 497 } | 497 } |
| 498 | 498 |
| 499 } // namespace net | 499 } // namespace net |
| OLD | NEW |