Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "nacl_io/host_resolver.h" | 5 #include "nacl_io/host_resolver.h" |
| 6 | 6 |
| 7 #include <assert.h> | 7 #include <assert.h> |
| 8 #include <stdlib.h> | 8 #include <stdlib.h> |
| 9 #include <string.h> | 9 #include <string.h> |
| 10 | 10 |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 189 sockaddr_in6* in6 = reinterpret_cast<sockaddr_in6*>(current->ai_addr); | 189 sockaddr_in6* in6 = reinterpret_cast<sockaddr_in6*>(current->ai_addr); |
| 190 memcpy(*hostent_addr, &in6->sin6_addr.s6_addr, hostent_.h_length); | 190 memcpy(*hostent_addr, &in6->sin6_addr.s6_addr, hostent_.h_length); |
| 191 break; | 191 break; |
| 192 } | 192 } |
| 193 } | 193 } |
| 194 current = current->ai_next; | 194 current = current->ai_next; |
| 195 hostent_addr++; | 195 hostent_addr++; |
| 196 } | 196 } |
| 197 | 197 |
| 198 freeaddrinfo(ai); | 198 freeaddrinfo(ai); |
| 199 | |
| 200 // Copy element zero of h_addr_list to h_addr as in some libc's h_addr may be | |
| 201 // a macro, but in others it may be a separate member. | |
| 202 hostent_.haddr = hostent_.h_addr_list[0]; | |
| 203 | |
| 199 return &hostent_; | 204 return &hostent_; |
| 200 } | 205 } |
| 201 | 206 |
| 202 void HostResolver::freeaddrinfo(struct addrinfo *res) { | 207 void HostResolver::freeaddrinfo(struct addrinfo *res) { |
| 203 while (res) { | 208 while (res) { |
| 204 struct addrinfo* cur = res; | 209 struct addrinfo* cur = res; |
| 205 res = res->ai_next; | 210 res = res->ai_next; |
| 206 free(cur->ai_addr); | 211 free(cur->ai_addr); |
| 207 free(cur->ai_canonname); | 212 free(cur->ai_canonname); |
| 208 free(cur); | 213 free(cur); |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 408 free(hostent_.h_aliases); | 413 free(hostent_.h_aliases); |
| 409 } | 414 } |
| 410 if (NULL != hostent_.h_addr_list) { | 415 if (NULL != hostent_.h_addr_list) { |
| 411 for (int i = 0; NULL != hostent_.h_addr_list[i]; i++) { | 416 for (int i = 0; NULL != hostent_.h_addr_list[i]; i++) { |
| 412 free(hostent_.h_addr_list[i]); | 417 free(hostent_.h_addr_list[i]); |
| 413 } | 418 } |
| 414 free(hostent_.h_addr_list); | 419 free(hostent_.h_addr_list); |
| 415 } | 420 } |
| 416 hostent_.h_name = NULL; | 421 hostent_.h_name = NULL; |
| 417 hostent_.h_aliases = NULL; | 422 hostent_.h_aliases = NULL; |
| 418 hostent_.h_addr_list = NULL; | 423 hostent_.h_addr_list = NULL; |
|
binji
2014/05/07 22:35:04
hostent_.h_addr = NULL
bradn
2014/05/07 22:39:06
Done.
| |
| 419 } | 424 } |
| 420 | 425 |
| 421 } // namespace nacl_io | 426 } // namespace nacl_io |
| 422 | 427 |
| 423 #endif // PROVIDES_SOCKET_API | 428 #endif // PROVIDES_SOCKET_API |
| OLD | NEW |