- uslen = sizeof(sock_us);
- themlen = sizeof(sock_them);
- if ((getsockname(this->u->fd,(sockaddr*)&sock_us,&uslen) || getpeername(this->u->fd, (sockaddr*)&sock_them, &themlen)))
+ sockaddr* sock_us = new sockaddr[2];
+ sockaddr* sock_them = new sockaddr[2];
+ bool success = false;
+ uslen = sizeof(sockaddr_in);
+ themlen = sizeof(sockaddr_in);
+#ifdef IPV6
+ if (this->u->GetProtocolFamily() == AF_INET6)
+ {
+ themlen = sizeof(sockaddr_in6);
+ uslen = sizeof(sockaddr_in6);
+ }
+#endif
+ success = ((getsockname(this->u->GetFd(),sock_us,&uslen) || getpeername(this->u->GetFd(), sock_them, &themlen)));
+ if (success)