QNativeSocketEngine: fix SO_REUSEPORT problems on Linux
Commit d1cd75e81a
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…
Reference in New Issue
Block a user