mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2024-11-22 13:30:06 +00:00
Set monitor connections to non-blocking
Better to just drop monitor connections when the quality is bad than to risk blocking the shard thread.
This commit is contained in:
parent
6b257887b7
commit
53d8cb67ba
@ -214,7 +214,7 @@ void CNSocket::step() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool setSockNonblocking(SOCKET listener, SOCKET newSock) {
|
bool setSockNonblocking(SOCKET listener, SOCKET newSock) {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
unsigned long mode = 1;
|
unsigned long mode = 1;
|
||||||
if (ioctlsocket(newSock, FIONBIO, &mode) != 0) {
|
if (ioctlsocket(newSock, FIONBIO, &mode) != 0) {
|
||||||
|
@ -117,6 +117,8 @@ inline bool validInVarPacket(size_t base, int32_t npayloads, size_t plsize, size
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setSockNonblocking(SOCKET listener, SOCKET newSock);
|
||||||
|
|
||||||
namespace CNSocketEncryption {
|
namespace CNSocketEncryption {
|
||||||
// you won't believe how complicated they made it in the client :facepalm:
|
// you won't believe how complicated they made it in the client :facepalm:
|
||||||
static constexpr const char* defaultKey = "m@rQn~W#";
|
static constexpr const char* defaultKey = "m@rQn~W#";
|
||||||
|
@ -46,6 +46,16 @@ void Monitor::init() {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
unsigned long mode = 1;
|
||||||
|
if (ioctlsocket(listener, FIONBIO, &mode) != 0) {
|
||||||
|
#else
|
||||||
|
if (fcntl(listener, F_SETFL, (fcntl(listener, F_GETFL, 0) | O_NONBLOCK)) != 0) {
|
||||||
|
#endif
|
||||||
|
std::cerr << "[FATAL] OpenFusion: fcntl failed" << std::endl;
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
std::cout << "Monitor listening on *:" << settings::MONITORPORT << std::endl;
|
std::cout << "Monitor listening on *:" << settings::MONITORPORT << std::endl;
|
||||||
|
|
||||||
REGISTER_SHARD_TIMER(tick, settings::MONITORINTERVAL);
|
REGISTER_SHARD_TIMER(tick, settings::MONITORINTERVAL);
|
||||||
@ -117,6 +127,8 @@ void Monitor::start(void *unused) {
|
|||||||
if (SOCKETERROR(sock))
|
if (SOCKETERROR(sock))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
setSockNonblocking(listener, sock);
|
||||||
|
|
||||||
std::cout << "[INFO] New monitor connection from " << inet_ntoa(address.sin_addr) << std::endl;
|
std::cout << "[INFO] New monitor connection from " << inet_ntoa(address.sin_addr) << std::endl;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user