diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/network/socket/qabstractsocketengine_p.h | 2 | ||||
-rw-r--r-- | src/network/socket/qhttpsocketengine.cpp | 3 | ||||
-rw-r--r-- | src/network/socket/qhttpsocketengine_p.h | 2 | ||||
-rw-r--r-- | src/network/socket/qnativesocketengine.cpp | 8 | ||||
-rw-r--r-- | src/network/socket/qnativesocketengine_p.h | 2 | ||||
-rw-r--r-- | src/network/socket/qsocks5socketengine.cpp | 3 | ||||
-rw-r--r-- | src/network/socket/qsocks5socketengine_p.h | 2 | ||||
-rw-r--r-- | src/network/socket/qtcpserver.cpp | 31 | ||||
-rw-r--r-- | src/network/socket/qtcpserver.h | 3 | ||||
-rw-r--r-- | src/network/socket/qtcpserver_p.h | 1 |
10 files changed, 44 insertions, 13 deletions
diff --git a/src/network/socket/qabstractsocketengine_p.h b/src/network/socket/qabstractsocketengine_p.h index 3d9ce96cb3..2da29384a0 100644 --- a/src/network/socket/qabstractsocketengine_p.h +++ b/src/network/socket/qabstractsocketengine_p.h @@ -133,7 +133,7 @@ public: virtual bool connectToHost(const QHostAddress &address, quint16 port) = 0; virtual bool connectToHostByName(const QString &name, quint16 port) = 0; virtual bool bind(const QHostAddress &address, quint16 port) = 0; - virtual bool listen() = 0; + virtual bool listen(int backlog) = 0; virtual int accept() = 0; virtual void close() = 0; diff --git a/src/network/socket/qhttpsocketengine.cpp b/src/network/socket/qhttpsocketengine.cpp index 6170f114f5..7ba3e17873 100644 --- a/src/network/socket/qhttpsocketengine.cpp +++ b/src/network/socket/qhttpsocketengine.cpp @@ -191,8 +191,9 @@ bool QHttpSocketEngine::bind(const QHostAddress &, quint16) return false; } -bool QHttpSocketEngine::listen() +bool QHttpSocketEngine::listen(int backlog) { + Q_UNUSED(backlog); qWarning("Operation is not supported"); setError(QAbstractSocket::UnsupportedSocketOperationError, QLatin1String("Unsupported socket operation")); diff --git a/src/network/socket/qhttpsocketengine_p.h b/src/network/socket/qhttpsocketengine_p.h index 0c2c450c81..492e51fe7f 100644 --- a/src/network/socket/qhttpsocketengine_p.h +++ b/src/network/socket/qhttpsocketengine_p.h @@ -95,7 +95,7 @@ public: bool connectToHost(const QHostAddress &address, quint16 port) override; bool connectToHostByName(const QString &name, quint16 port) override; bool bind(const QHostAddress &address, quint16 port) override; - bool listen() override; + bool listen(int backlog) override; int accept() override; void close() override; diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp index 302b714cb4..d46c3640d2 100644 --- a/src/network/socket/qnativesocketengine.cpp +++ b/src/network/socket/qnativesocketengine.cpp @@ -689,7 +689,7 @@ bool QNativeSocketEngine::bind(const QHostAddress &address, quint16 port) \sa bind(), accept() */ -bool QNativeSocketEngine::listen() +bool QNativeSocketEngine::listen(int backlog) { Q_D(QNativeSocketEngine); Q_CHECK_VALID_SOCKETLAYER(QNativeSocketEngine::listen(), false); @@ -701,11 +701,7 @@ bool QNativeSocketEngine::listen() Q_CHECK_TYPE(QNativeSocketEngine::listen(), QAbstractSocket::TcpSocket, false); #endif - // We're using a backlog of 50. Most modern kernels support TCP - // syncookies by default, and if they do, the backlog is ignored. - // When there is no support for TCP syncookies, this value is - // fine. - return d->nativeListen(50); + return d->nativeListen(backlog); } /*! diff --git a/src/network/socket/qnativesocketengine_p.h b/src/network/socket/qnativesocketengine_p.h index e5f0701d14..462a7d24d0 100644 --- a/src/network/socket/qnativesocketengine_p.h +++ b/src/network/socket/qnativesocketengine_p.h @@ -138,7 +138,7 @@ public: bool connectToHost(const QHostAddress &address, quint16 port) override; bool connectToHostByName(const QString &name, quint16 port) override; bool bind(const QHostAddress &address, quint16 port) override; - bool listen() override; + bool listen(int backlog) override; int accept() override; void close() override; diff --git a/src/network/socket/qsocks5socketengine.cpp b/src/network/socket/qsocks5socketengine.cpp index 339116d402..747a99003f 100644 --- a/src/network/socket/qsocks5socketengine.cpp +++ b/src/network/socket/qsocks5socketengine.cpp @@ -1391,9 +1391,10 @@ bool QSocks5SocketEngine::bind(const QHostAddress &addr, quint16 port) } -bool QSocks5SocketEngine::listen() +bool QSocks5SocketEngine::listen(int backlog) { Q_D(QSocks5SocketEngine); + Q_UNUSED(backlog); QSOCKS5_Q_DEBUG << "listen()"; diff --git a/src/network/socket/qsocks5socketengine_p.h b/src/network/socket/qsocks5socketengine_p.h index 77b461b944..fd063eb4fa 100644 --- a/src/network/socket/qsocks5socketengine_p.h +++ b/src/network/socket/qsocks5socketengine_p.h @@ -81,7 +81,7 @@ public: bool connectToHost(const QHostAddress &address, quint16 port) override; bool connectToHostByName(const QString &name, quint16 port) override; bool bind(const QHostAddress &address, quint16 port) override; - bool listen() override; + bool listen(int backlog) override; int accept() override; void close() override; diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp index a404350d98..1a3d122b7f 100644 --- a/src/network/socket/qtcpserver.cpp +++ b/src/network/socket/qtcpserver.cpp @@ -331,7 +331,7 @@ bool QTcpServer::listen(const QHostAddress &address, quint16 port) return false; } - if (!d->socketEngine->listen()) { + if (!d->socketEngine->listen(d->listenBacklog)) { d->serverSocketError = d->socketEngine->error(); d->serverSocketErrorString = d->socketEngine->errorString(); return false; @@ -650,6 +650,35 @@ int QTcpServer::maxPendingConnections() const } /*! + Sets the backlog queue size of to be accepted connections to \a + size. The operating system might reduce or ignore this value. + By default, the queue size is 50. + + \note This setting is only used when listen() is called. + + \since 6.3 + + \sa listenBacklog() +*/ +void QTcpServer::setListenBacklog(int size) +{ + d_func()->listenBacklog = size; +} + +/*! + Returns the backlog queue size of to be accepted connections. The + default is 50. + + \since 6.3 + + \sa setListenBacklog() +*/ +int QTcpServer::listenBacklog() const +{ + return d_func()->listenBacklog; +} + +/*! Returns an error code for the last error that occurred. \sa errorString() diff --git a/src/network/socket/qtcpserver.h b/src/network/socket/qtcpserver.h index 37df12919f..c6f5eb3e7f 100644 --- a/src/network/socket/qtcpserver.h +++ b/src/network/socket/qtcpserver.h @@ -69,6 +69,9 @@ public: void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; + void setListenBacklog(int size); + int listenBacklog() const; + quint16 serverPort() const; QHostAddress serverAddress() const; diff --git a/src/network/socket/qtcpserver_p.h b/src/network/socket/qtcpserver_p.h index 6ee8c5f0b1..8fa9b6337b 100644 --- a/src/network/socket/qtcpserver_p.h +++ b/src/network/socket/qtcpserver_p.h @@ -83,6 +83,7 @@ public: QAbstractSocket::SocketError serverSocketError; QString serverSocketErrorString; + int listenBacklog = 50; int maxConnections; #ifndef QT_NO_NETWORKPROXY |