diff options
Diffstat (limited to 'src/network/access/qhttpnetworkconnectionchannel.cpp')
| -rw-r--r-- | src/network/access/qhttpnetworkconnectionchannel.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index ffd5d8ff333..e427175ce61 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -923,9 +923,19 @@ void QHttpNetworkConnectionChannel::_q_connected_abstract_socket(QAbstractSocket // not sure yet if it helps, but it makes sense absSocket->setSocketOption(QAbstractSocket::KeepAliveOption, 1); - int kaIdleOption = qEnvironmentVariableIntegerValue(keepAliveIdleOption).value_or(TCP_KEEPIDLE_DEF); - int kaIntervalOption = qEnvironmentVariableIntegerValue(keepAliveIntervalOption).value_or(TCP_KEEPINTVL_DEF); - int kaCountOption = qEnvironmentVariableIntegerValue(keepAliveCountOption).value_or(TCP_KEEPCNT_DEF); + QTcpKeepAliveConfiguration keepAliveConfig = connection->tcpKeepAliveParameters(); + + auto getKeepAliveValue = [](int configValue, + const char* envName, + int defaultValue) { + if (configValue > 0) + return configValue; + return static_cast<int>(qEnvironmentVariableIntegerValue(envName).value_or(defaultValue)); + }; + + int kaIdleOption = getKeepAliveValue(keepAliveConfig.idleTimeBeforeProbes.count(), keepAliveIdleOption, TCP_KEEPIDLE_DEF); + int kaIntervalOption = getKeepAliveValue(keepAliveConfig.intervalBetweenProbes.count(), keepAliveIntervalOption, TCP_KEEPINTVL_DEF); + int kaCountOption = getKeepAliveValue(keepAliveConfig.probeCount, keepAliveCountOption, TCP_KEEPCNT_DEF); absSocket->setSocketOption(QAbstractSocket::KeepAliveIdleOption, kaIdleOption); absSocket->setSocketOption(QAbstractSocket::KeepAliveIntervalOption, kaIntervalOption); absSocket->setSocketOption(QAbstractSocket::KeepAliveCountOption, kaCountOption); |
