- /* There is an address here. Is it ipv6? */
- if (strchr(addr,':'))
- {
- /* Yes it is */
- in6_addr addy;
- if (inet_pton(AF_INET6, addr, &addy) < 1)
- {
- delete[] servaddr;
- return false;
- }
-
- ((sockaddr_in6*)servaddr)->sin6_family = AF_INET6;
- memcpy(&(((sockaddr_in6*)servaddr)->sin6_addr), &addy, sizeof(in6_addr));
- ((sockaddr_in6*)servaddr)->sin6_port = htons(port);
- size = sizeof(sockaddr_in6);
- }
- else
- {
- /* No, its not */
- in_addr addy;
- if (inet_pton(AF_INET, addr, &addy) < 1)
- {
- delete[] servaddr;
- return false;
- }
-
- ((sockaddr_in*)servaddr)->sin_family = AF_INET;
- ((sockaddr_in*)servaddr)->sin_addr = addy;
- ((sockaddr_in*)servaddr)->sin_port = htons(port);
- size = sizeof(sockaddr_in);
- }