diff options
Diffstat (limited to 'src/network/socket/qnativesocketengine_unix.cpp')
| -rw-r--r-- | src/network/socket/qnativesocketengine_unix.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp index 430197ccc6e..e920de11c13 100644 --- a/src/network/socket/qnativesocketengine_unix.cpp +++ b/src/network/socket/qnativesocketengine_unix.cpp @@ -170,6 +170,26 @@ static void convertToLevelAndOption(QNativeSocketEngine::SocketOption opt, #endif } break; + case QNativeSocketEngine::KeepAliveIdleOption: + level = IPPROTO_TCP; +#ifdef TCP_KEEPALIVE + n = TCP_KEEPALIVE; +#else + n = TCP_KEEPIDLE; +#endif + break; + case QNativeSocketEngine::KeepAliveIntervalOption: +#ifdef TCP_KEEPINTVL + level = IPPROTO_TCP; + n = TCP_KEEPINTVL; +#endif + break; + case QNativeSocketEngine::KeepAliveCountOption: +#ifdef TCP_KEEPCNT + level = IPPROTO_TCP; + n = TCP_KEEPCNT; +#endif + break; } } @@ -200,7 +220,7 @@ bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType soc int type = (socketType == QAbstractSocket::UdpSocket) ? SOCK_DGRAM : SOCK_STREAM; int socket = qt_safe_socket(domain, type, protocol, O_NONBLOCK); - if (socket < 0 && socketProtocol == QAbstractSocket::AnyIPProtocol && errno == EAFNOSUPPORT) { + if (socket < 0 && socketProtocol == QAbstractSocket::AnyIPProtocol && (errno == EAFNOSUPPORT || errno == ENOTSUP )) { domain = AF_INET; socket = qt_safe_socket(domain, type, protocol, O_NONBLOCK); socketProtocol = QAbstractSocket::IPv4Protocol; @@ -1161,6 +1181,8 @@ qint64 QNativeSocketEnginePrivate::nativeSendDatagram(const char *data, qint64 l sentBytes = -2; break; case EMSGSIZE: + // seen on VxWorks + case ENOMEM: setError(QAbstractSocket::DatagramTooLargeError, DatagramTooLargeErrorString); break; case ECONNRESET: |
