remove non-blocking mode
This commit is contained in:
parent
85d94017c7
commit
55de4848dc
@ -346,43 +346,13 @@ public:
|
|||||||
freeaddrinfo(addrinfo);
|
freeaddrinfo(addrinfo);
|
||||||
throw std::runtime_error("Could not create socket");
|
throw std::runtime_error("Could not create socket");
|
||||||
}
|
}
|
||||||
#ifdef _WIN32
|
|
||||||
u_long mode = 1;
|
|
||||||
auto err = ioctlsocket(descriptor, FIONBIO, &mode);
|
|
||||||
if (err != NO_ERROR) {
|
|
||||||
throw std::runtime_error(
|
|
||||||
"Could not set to non-blocking mode [errno=" + std::to_string(err) +
|
|
||||||
"]: " + std::string(strerror(err))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if (fcntl(descriptor, F_SETFL, O_NONBLOCK) < 0) {
|
|
||||||
freeaddrinfo(addrinfo);
|
|
||||||
closesocket(descriptor);
|
|
||||||
throw std::runtime_error("Failed to make socket non-blocking");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int res = connectsocket(descriptor, addrinfo->ai_addr, addrinfo->ai_addrlen);
|
int res = connectsocket(descriptor, addrinfo->ai_addr, addrinfo->ai_addrlen);
|
||||||
if (res == -1) {
|
if (res < 0) {
|
||||||
# ifdef _WIN32
|
|
||||||
if (WSAGetLastError() != WSAEWOULDBLOCK) {
|
|
||||||
auto error = handle_socket_error("Connect failed");
|
auto error = handle_socket_error("Connect failed");
|
||||||
closesocket(descriptor);
|
closesocket(descriptor);
|
||||||
freeaddrinfo(addrinfo);
|
freeaddrinfo(addrinfo);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
# else
|
|
||||||
if (errno != EINPROGRESS) {
|
|
||||||
auto error = handle_socket_error("Connect failed");
|
|
||||||
closesocket(descriptor);
|
|
||||||
freeaddrinfo(addrinfo);
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
|
||||||
|
|
||||||
logger.info() << "connected to " << address << " ["
|
logger.info() << "connected to " << address << " ["
|
||||||
<< to_string(addrinfo) << ":" << port << "]";
|
<< to_string(addrinfo) << ":" << port << "]";
|
||||||
return std::make_shared<SocketImpl>(descriptor, addrinfo);
|
return std::make_shared<SocketImpl>(descriptor, addrinfo);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user