- in6_addr n;
- if (inet_pton(AF_INET6, current_ip.c_str(), &n) > 0)
- {
- memcpy(&((sockaddr_in6*)s)->sin6_addr, &n, sizeof(sockaddr_in6));
- ((sockaddr_in6*)s)->sin6_port = 0;
- ((sockaddr_in6*)s)->sin6_family = AF_INET6;
- size = sizeof(sockaddr_in6);
- }
- else
- {
- // Well, this is as good as it's gonna get.
- errno = EADDRNOTAVAIL;
- delete[] s;
- return false;
- }
- }
- else
-#endif
- {
- in_addr n;
- if (inet_aton(current_ip.c_str(), &n) > 0)
- {
- ((sockaddr_in*)s)->sin_addr = n;
- ((sockaddr_in*)s)->sin_port = 0;
- ((sockaddr_in*)s)->sin_family = AF_INET;
- }
- else
- {
- // Well, this is as good as it's gonna get.
- errno = EADDRNOTAVAIL;
- delete[] s;
- return false;
- }