|
57 | 57 | #include <Watchdog.hpp>
|
58 | 58 | #include <wasm/base64.hpp>
|
59 | 59 |
|
| 60 | +// Bug in pre C++17 where static constexpr must be defined. Fixed in C++17. |
| 61 | +constexpr std::chrono::microseconds SocketPoll::DefaultPollTimeoutMicroS; |
| 62 | +constexpr std::chrono::microseconds WebSocketHandler::InitialPingDelayMicroS; |
| 63 | +constexpr std::chrono::microseconds WebSocketHandler::PingFrequencyMicroS; |
| 64 | + |
60 | 65 | std::atomic<bool> SocketPoll::InhibitThreadChecks(false);
|
61 | 66 | std::atomic<bool> Socket::InhibitThreadChecks(false);
|
62 | 67 |
|
@@ -190,7 +195,6 @@ bool StreamSocket::socketpair(const std::chrono::steady_clock::time_point &creat
|
190 | 195 | int rc = ::socketpair(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0, pair);
|
191 | 196 | if (rc != 0)
|
192 | 197 | return false;
|
193 |
| - |
194 | 198 | child = std::make_shared<StreamSocket>("save-child", pair[0], Socket::Type::Unix, true, HostType::Other, ReadType::NormalRead, creationTime);
|
195 | 199 | child->setNoShutdown();
|
196 | 200 | child->setClientAddress("save-child");
|
@@ -312,9 +316,6 @@ namespace {
|
312 | 316 |
|
313 | 317 | SocketPoll::SocketPoll(std::string threadName)
|
314 | 318 | : _name(std::move(threadName)),
|
315 |
| - _pollTimeout( net::Defaults::get().SocketPollTimeout ), |
316 |
| - _limitedConnections( false ), |
317 |
| - _connectionLimit( 0 ), |
318 | 319 | _pollStartIndex(0),
|
319 | 320 | _stop(false),
|
320 | 321 | _threadStarted(0),
|
@@ -1088,7 +1089,7 @@ void WebSocketHandler::dumpState(std::ostream& os, const std::string& /*indent*/
|
1088 | 1089 |
|
1089 | 1090 | void StreamSocket::dumpState(std::ostream& os)
|
1090 | 1091 | {
|
1091 |
| - int64_t timeoutMaxMicroS = _pollTimeout.count(); |
| 1092 | + int64_t timeoutMaxMicroS = SocketPoll::DefaultPollTimeoutMicroS.count(); |
1092 | 1093 | const int events = getPollEvents(std::chrono::steady_clock::now(), timeoutMaxMicroS);
|
1093 | 1094 | os << '\t' << std::setw(6) << getFD() << "\t0x" << std::hex << events << std::dec << '\t'
|
1094 | 1095 | << (ignoringInput() ? "ignore\t" : "process\t") << std::setw(6) << _inBuffer.size() << '\t'
|
@@ -1486,14 +1487,14 @@ bool StreamSocket::checkRemoval(std::chrono::steady_clock::time_point now)
|
1486 | 1487 | // Forced removal on outside-facing IPv[46] network connections only
|
1487 | 1488 | const auto durLast =
|
1488 | 1489 | std::chrono::duration_cast<std::chrono::milliseconds>(now - getLastSeenTime());
|
1489 |
| - /// TO Criteria: Violate maximum idle (_pollTimeout default 64s) |
1490 |
| - const bool isIdle = _pollTimeout > std::chrono::microseconds::zero() && |
1491 |
| - durLast > _pollTimeout; |
| 1490 | + /// TO Criteria: Violate maximum idle (DefaultInactivityimeoutMicroS default 3600s) |
| 1491 | + const bool isInactive = SocketPoll::DefaultInactivityimeoutMicroS > std::chrono::microseconds::zero() && |
| 1492 | + durLast > SocketPoll::DefaultInactivityimeoutMicroS; |
1492 | 1493 | /// TO Criteria: Shall terminate?
|
1493 | 1494 | const bool isTermination = SigUtil::getTerminationFlag();
|
1494 |
| - if (isIdle || isTermination ) |
| 1495 | + if (isInactive || isTermination ) |
1495 | 1496 | {
|
1496 |
| - LOG_WRN("CheckRemoval: Timeout: {Idle " << isIdle |
| 1497 | + LOG_WRN("CheckRemoval: Timeout: {Inactive " << isInactive |
1497 | 1498 | << ", Termination " << isTermination << "}, "
|
1498 | 1499 | << getStatsString(now) << ", "
|
1499 | 1500 | << *this);
|
@@ -1528,8 +1529,8 @@ bool StreamSocket::parseHeader(const char *clientName,
|
1528 | 1529 | {
|
1529 | 1530 | assert(map._headerSize == 0 && map._messageSize == 0);
|
1530 | 1531 |
|
1531 |
| - const std::chrono::duration<float, std::milli> delayMax = |
1532 |
| - std::chrono::duration_cast<std::chrono::milliseconds>(_httpTimeout); |
| 1532 | + constexpr std::chrono::duration<float, std::milli> delayMax = |
| 1533 | + std::chrono::duration_cast<std::chrono::milliseconds>(SocketPoll::DefaultPollTimeoutMicroS); |
1533 | 1534 |
|
1534 | 1535 | std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now();
|
1535 | 1536 | std::chrono::duration<float, std::milli> delayMs = now - lastHTTPHeader;
|
|
0 commit comments