File tree Expand file tree Collapse file tree 1 file changed +13
-1
lines changed
Expand file tree Collapse file tree 1 file changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -81,7 +81,19 @@ extern "C" LEAN_EXPORT lean_obj_res lean_uv_dns_get_info(b_obj_arg name, b_obj_a
8181
8282 for (struct addrinfo * ai = res; ai != NULL ; ai = ai->ai_next ) {
8383 const struct sockaddr * sin_addr = (const struct sockaddr *)ai->ai_addr ;
84- in_addr_storage* storage_addr = (in_addr_storage*)sin_addr->sa_data ;
84+
85+ in_addr_storage* storage_addr;
86+
87+ if (sin_addr->sa_family == AF_INET) {
88+ struct sockaddr_in * ipv4 = (struct sockaddr_in *)sin_addr;
89+ storage_addr = (in_addr_storage*)&(ipv4->sin_addr );
90+ } else if (sin_addr->sa_family == AF_INET6) {
91+ struct sockaddr_in6 * ipv6 = (struct sockaddr_in6 *)sin_addr;
92+ storage_addr = (in_addr_storage*)&(ipv6->sin6_addr );
93+ } else {
94+ continue ;
95+ }
96+
8597 lean_object* addr = lean_in_addr_storage_to_ip_addr ((short )sin_addr->sa_family , storage_addr);
8698 arr = lean_array_push (arr, addr);
8799 }
You can’t perform that action at this time.
0 commit comments