diff options
author | Daniel Nicoletti <daniel.nicoletti@kdab.com> | 2021-06-29 16:37:41 -0300 |
---|---|---|
committer | Daniel Nicoletti <daniel.nicoletti@kdab.com> | 2021-07-19 17:05:53 -0300 |
commit | e095fa7f9cb994ec2b2639b58a3c0d822d4d2cf6 (patch) | |
tree | 3f71467e3a39062c1f7b95cfd6b98e9c4d174ba8 /src/network/socket/qtcpserver.cpp | |
parent | 0f32703aa5aee46bb2c0bfe9c8e54f05b82cf0f3 (diff) |
Allow to set TCP network listen(2) backlog
Qt has a hardcoded backlog value of 50,
this allows for applications to tune this
value. Modern kernels have the SYN cookie
feature that reduces pressure from an
flood attack, the backlog setting however
is then a queue for most likely real
completed (SYN/ACK) connections hence, it's
easy to get clients connections dropped
with this very small limit.
[ChangeLog][QtNetwork][QTcpServer] Added
QTcpServer::setListenBacklog() to be able
to have control over the listen backlog feature.
Change-Id: I1c78af6d99e012591e214b7e09fa85c485880d48
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'src/network/socket/qtcpserver.cpp')
-rw-r--r-- | src/network/socket/qtcpserver.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
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() |