Address review comments.
This commit is contained in:
parent
636cf1d4f8
commit
3e424b2363
2 changed files with 20 additions and 17 deletions
|
@ -129,21 +129,23 @@ void server_base::serve(boost::asio::yield_context yield, boost::asio::ip::tcp::
|
|||
return;
|
||||
}
|
||||
|
||||
int timeout = 300;
|
||||
if(keep_alive_) {
|
||||
int timeout = 30;
|
||||
#ifdef __linux__
|
||||
int cnt = 10;
|
||||
int interval = 30;
|
||||
setsockopt(socket->native_handle(), SOL_TCP, TCP_KEEPIDLE, &timeout, sizeof(timeout));
|
||||
setsockopt(socket->native_handle(), SOL_TCP, TCP_KEEPCNT, &cnt, sizeof(cnt));
|
||||
setsockopt(socket->native_handle(), SOL_TCP, TCP_KEEPINTVL, &interval, sizeof(interval));
|
||||
int cnt = 10;
|
||||
int interval = 30;
|
||||
setsockopt(socket->native_handle(), SOL_TCP, TCP_KEEPIDLE, &timeout, sizeof(timeout));
|
||||
setsockopt(socket->native_handle(), SOL_TCP, TCP_KEEPCNT, &cnt, sizeof(cnt));
|
||||
setsockopt(socket->native_handle(), SOL_TCP, TCP_KEEPINTVL, &interval, sizeof(interval));
|
||||
#elif defined(__APPLE__) && defined(__MACH__)
|
||||
setsockopt(socket->native_handle(), IPPROTO_TCP, TCP_KEEPALIVE, &timeout, sizeof(timeout));
|
||||
setsockopt(socket->native_handle(), IPPROTO_TCP, TCP_KEEPALIVE, &timeout, sizeof(timeout));
|
||||
#elif defined(_WIN32)
|
||||
// these are in milliseconds for windows
|
||||
timeout *= 1000;
|
||||
setsockopt(socket->native_handle(), SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof(timeout));
|
||||
setsockopt(socket->native_handle(), SOL_SOCKET, SO_SNDTIMEO, (const char*)&timeout, sizeof(timeout));
|
||||
// these are in milliseconds for windows
|
||||
DWORD timeout_ms = timeout * 1000;
|
||||
setsockopt(socket->native_handle(), SOL_SOCKET, SO_RCVTIMEO, reinterpret_cast<const char*>(&timeout_ms), sizeof(timeout_ms));
|
||||
setsockopt(socket->native_handle(), SOL_SOCKET, SO_SNDTIMEO, reinterpret_cast<const char*>(&timeout_ms), sizeof(timeout_ms));
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
fcntl(socket->native_handle(), F_SETFD, FD_CLOEXEC);
|
||||
|
|
|
@ -576,17 +576,18 @@ void wesnothd_connection::set_keepalive(int seconds)
|
|||
utils::get<raw_socket>(socket_)->set_option(option);
|
||||
|
||||
#ifdef __linux__
|
||||
int cnt = 5;
|
||||
int interval = 1;
|
||||
setsockopt(utils::get<raw_socket>(socket_)->native_handle(), SOL_TCP, TCP_KEEPIDLE, &seconds, sizeof(seconds));
|
||||
int timeout = 10;
|
||||
int cnt = std::max((seconds - 10) / 10, 1);
|
||||
int interval = 10;
|
||||
setsockopt(utils::get<raw_socket>(socket_)->native_handle(), SOL_TCP, TCP_KEEPIDLE, &timeout, sizeof(timeout));
|
||||
setsockopt(utils::get<raw_socket>(socket_)->native_handle(), SOL_TCP, TCP_KEEPCNT, &cnt, sizeof(cnt));
|
||||
setsockopt(utils::get<raw_socket>(socket_)->native_handle(), SOL_TCP, TCP_KEEPINTVL, &interval, sizeof(interval));
|
||||
#elif defined(__APPLE__) && defined(__MACH__)
|
||||
setsockopt(utils::get<raw_socket>(socket_)->native_handle(), IPPROTO_TCP, TCP_KEEPALIVE, &seconds, sizeof(seconds));
|
||||
#elif defined(_WIN32)
|
||||
// these are in milliseconds for windows
|
||||
seconds *= 1000;
|
||||
setsockopt(utils::get<raw_socket>(socket_)->native_handle(), SOL_SOCKET, SO_RCVTIMEO, (const char*)&seconds, sizeof(seconds));
|
||||
setsockopt(utils::get<raw_socket>(socket_)->native_handle(), SOL_SOCKET, SO_SNDTIMEO, (const char*)&seconds, sizeof(seconds));
|
||||
DWORD timeout_ms = seconds * 1000;
|
||||
setsockopt(utils::get<raw_socket>(socket_)->native_handle(), SOL_SOCKET, SO_RCVTIMEO, reinterpret_cast<const char*>(&timeout_ms), sizeof(timeout_ms));
|
||||
setsockopt(utils::get<raw_socket>(socket_)->native_handle(), SOL_SOCKET, SO_SNDTIMEO, reinterpret_cast<const char*>(&timeout_ms), sizeof(timeout_ms));
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue