QNativeSocketEngine: fix SO_REUSEPORT problems on Linux
Commit d1cd75e81af809a46fcf40cd2b39858e238a4d97 introduced the usage of the SO_REUSEPORT socket flag on Unix systems if available. However, on Linux systems this socket option behaves differently from the previously used SO_REUSEADDR socket option. This patch disables the use of the SO_REUSEPORT option to fix rebinding problems on Linux. The option was introduced to improve support on OS X and other BSDs. It is not necessary on Linux. [ChangeLog][QtNetwork][QUdpSocket] Fixed a bug that caused the QAbstractSocket::ShareAddress option not to work on Linux. Change-Id: Ice04b8b9e78400dce193e2c1d73b67e33edf8840 Reviewed-by: Richard J. Moore <rich@kde.org>
This commit is contained in:
parent
ec6556a2b9
commit
c28bc5f113
@ -337,7 +337,7 @@ bool QNativeSocketEnginePrivate::setOption(QNativeSocketEngine::SocketOption opt
|
||||
|
||||
int n, level;
|
||||
convertToLevelAndOption(opt, socketProtocol, level, n);
|
||||
#if defined(SO_REUSEPORT)
|
||||
#if defined(SO_REUSEPORT) && !defined(Q_OS_LINUX)
|
||||
if (opt == QNativeSocketEngine::AddressReusable) {
|
||||
// on OS X, SO_REUSEADDR isn't sufficient to allow multiple binds to the
|
||||
// same port (which is useful for multicast UDP). SO_REUSEPORT is, but
|
||||
|
Loading…
x
Reference in New Issue
Block a user