+#ifdef LWS_WITH_IPV6
+ if (LWS_IPV6_ENABLED(context)) {
+ memset(&hints, 0, sizeof(struct addrinfo));
+ n = getaddrinfo(ads, NULL, &hints, &result);
+ if (n) {
+ lwsl_err("getaddrinfo: %s\n", gai_strerror(n));
+ goto oom4;
+ }
+
+ server_addr6.sin6_family = AF_INET6;
+ switch (result->ai_family) {
+ case AF_INET:
+ /* map IPv4 to IPv6 */
+ bzero((char *)&server_addr6.sin6_addr,
+ sizeof(struct in6_addr));
+ server_addr6.sin6_addr.s6_addr16[5] = 0xffff;
+ bcopy(&((struct sockaddr_in *)result->ai_addr)->sin_addr,
+ &server_addr6.sin6_addr.s6_addr16[6],
+ sizeof(struct in_addr));
+ break;
+ case AF_INET6:
+ memcpy(&server_addr6.sin6_addr,
+ &((struct sockaddr_in6 *)result->ai_addr)->sin6_addr,
+ sizeof(struct in6_addr));
+ break;
+ default:
+ lwsl_err("Unknown address family\n");
+ freeaddrinfo(result);
+ goto oom4;
+ }
+
+ freeaddrinfo(result);
+ } else
+#endif
+ {
+ server_hostent = gethostbyname(ads);
+ if (!server_hostent) {
+ lwsl_err("Unable to get host name from %s\n", ads);
+ goto oom4;
+ }
+
+ server_addr4.sin_family = AF_INET;
+ server_addr4.sin_addr =
+ *((struct in_addr *)server_hostent->h_addr);
+ bzero(&server_addr4.sin_zero, 8);