-#ifdef IPV6
- if (v6)
- {
- in6_addr addy;
- if (inet_pton(AF_INET6, this->host, &addy) > 0)
- {
- ((sockaddr_in6*)addr)->sin6_family = AF_INET6;
- memcpy(&((sockaddr_in6*)addr)->sin6_addr, &addy, sizeof(addy));
- ((sockaddr_in6*)addr)->sin6_port = htons(this->port);
- size = sizeof(sockaddr_in6);
- }
- }
- else
- {
- in_addr addy;
- if (inet_aton(this->host, &addy) > 0)
- {
- ((sockaddr_in*)addr)->sin_family = AF_INET;
- ((sockaddr_in*)addr)->sin_addr = addy;
- ((sockaddr_in*)addr)->sin_port = htons(this->port);
- }
- }
-#else
- in_addr addy;
- if (inet_aton(this->host, &addy) > 0)
- {
- ((sockaddr_in*)addr)->sin_family = AF_INET;
- ((sockaddr_in*)addr)->sin_addr = addy;
- ((sockaddr_in*)addr)->sin_port = htons(this->port);
- }
-#endif
-#ifndef WIN32
- int flags = fcntl(this->fd, F_GETFL, 0);
- fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
-#else
- unsigned long flags = 0;
- ioctlsocket(this->fd, FIONBIO, &flags);
-#endif
- if (connect(this->fd, (sockaddr*)addr, size) == -1)
- {
- if (errno != EINPROGRESS)
- {
- this->OnError(I_ERR_CONNECT);
- this->Close();
- this->state = I_ERROR;
- return false;
- }