diff options
Diffstat (limited to 'src/network/socket')
-rw-r--r-- | src/network/socket/qlocalserver.cpp | 30 | ||||
-rw-r--r-- | src/network/socket/qlocalserver.h | 3 | ||||
-rw-r--r-- | src/network/socket/qlocalserver_p.h | 1 | ||||
-rw-r--r-- | src/network/socket/qlocalserver_tcp.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qlocalserver_unix.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qlocalserver_win.cpp | 5 | ||||
-rw-r--r-- | src/network/socket/qtcpserver.cpp | 13 | ||||
-rw-r--r-- | src/network/socket/qtcpserver.h | 4 |
8 files changed, 46 insertions, 14 deletions
diff --git a/src/network/socket/qlocalserver.cpp b/src/network/socket/qlocalserver.cpp index 6517d6dc6a..0e0cd755a4 100644 --- a/src/network/socket/qlocalserver.cpp +++ b/src/network/socket/qlocalserver.cpp @@ -554,6 +554,36 @@ bool QLocalServer::waitForNewConnection(int msec, bool *timedOut) return !d->pendingConnections.isEmpty(); } +/*! + 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 property must be set prior to calling listen(). + + \since 6.3 + + \sa listenBacklogSize() +*/ +void QLocalServer::setListenBacklogSize(int size) +{ + Q_D(QLocalServer); + d->listenBacklog = size; +} + +/*! + Returns the backlog queue size of to be accepted connections. + + \since 6.3 + + \sa setListenBacklogSize() +*/ +int QLocalServer::listenBacklogSize() const +{ + Q_D(const QLocalServer); + return d->listenBacklog; +} + QT_END_NAMESPACE #include "moc_qlocalserver.cpp" diff --git a/src/network/socket/qlocalserver.h b/src/network/socket/qlocalserver.h index f4ae63e6c4..9106bcad45 100644 --- a/src/network/socket/qlocalserver.h +++ b/src/network/socket/qlocalserver.h @@ -93,6 +93,9 @@ public: void setMaxPendingConnections(int numConnections); bool waitForNewConnection(int msec = 0, bool *timedOut = nullptr); + void setListenBacklogSize(int size); + int listenBacklogSize() const; + void setSocketOptions(SocketOptions options); SocketOptions socketOptions() const; QBindable<SocketOptions> bindableSocketOptions(); diff --git a/src/network/socket/qlocalserver_p.h b/src/network/socket/qlocalserver_p.h index 5907874b60..bbaad80254 100644 --- a/src/network/socket/qlocalserver_p.h +++ b/src/network/socket/qlocalserver_p.h @@ -126,6 +126,7 @@ public: QQueue<QLocalSocket*> pendingConnections; QString errorString; QAbstractSocket::SocketError error; + int listenBacklog = 50; Q_OBJECT_BINDABLE_PROPERTY(QLocalServerPrivate, QLocalServer::SocketOptions, socketOptions) }; diff --git a/src/network/socket/qlocalserver_tcp.cpp b/src/network/socket/qlocalserver_tcp.cpp index b3f1188afa..1c46d75f52 100644 --- a/src/network/socket/qlocalserver_tcp.cpp +++ b/src/network/socket/qlocalserver_tcp.cpp @@ -56,6 +56,8 @@ void QLocalServerPrivate::init() bool QLocalServerPrivate::listen(const QString &requestedServerName) { + tcpServer.setListenBacklogSize(listenBacklog); + if (!tcpServer.listen(QHostAddress::LocalHost)) return false; diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp index 8272778d7f..5840958350 100644 --- a/src/network/socket/qlocalserver_unix.cpp +++ b/src/network/socket/qlocalserver_unix.cpp @@ -184,7 +184,7 @@ bool QLocalServerPrivate::listen(const QString &requestedServerName) } // listen for connections - if (-1 == qt_safe_listen(listenSocket, 50)) { + if (-1 == qt_safe_listen(listenSocket, listenBacklog)) { setError(QLatin1String("QLocalServer::listen")); closeServer(); return false; diff --git a/src/network/socket/qlocalserver_win.cpp b/src/network/socket/qlocalserver_win.cpp index a05722987c..c8b356cb29 100644 --- a/src/network/socket/qlocalserver_win.cpp +++ b/src/network/socket/qlocalserver_win.cpp @@ -53,9 +53,6 @@ // before it is read. Pipewriter is used for write buffering. #define BUFSIZE 0 -// ###: This should be a property. Should replace the insane 50 on unix as well. -#define SYSTEM_MAX_PENDING_SOCKETS 8 - QT_BEGIN_NAMESPACE bool QLocalServerPrivate::addListener() @@ -256,7 +253,7 @@ bool QLocalServerPrivate::listen(const QString &name) connectionEventNotifier = new QWinEventNotifier(eventHandle , q); q->connect(connectionEventNotifier, SIGNAL(activated(HANDLE)), q, SLOT(_q_onNewConnection())); - for (int i = 0; i < SYSTEM_MAX_PENDING_SOCKETS; ++i) + for (int i = 0; i < listenBacklog; ++i) if (!addListener()) return false; diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp index 1a3d122b7f..100bb23340 100644 --- a/src/network/socket/qtcpserver.cpp +++ b/src/network/socket/qtcpserver.cpp @@ -654,26 +654,25 @@ int QTcpServer::maxPendingConnections() const 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. + \note This property must be set prior to calling listen(). \since 6.3 - \sa listenBacklog() + \sa listenBacklogSize() */ -void QTcpServer::setListenBacklog(int size) +void QTcpServer::setListenBacklogSize(int size) { d_func()->listenBacklog = size; } /*! - Returns the backlog queue size of to be accepted connections. The - default is 50. + Returns the backlog queue size of to be accepted connections. \since 6.3 - \sa setListenBacklog() + \sa setListenBacklogSize() */ -int QTcpServer::listenBacklog() const +int QTcpServer::listenBacklogSize() const { return d_func()->listenBacklog; } diff --git a/src/network/socket/qtcpserver.h b/src/network/socket/qtcpserver.h index c6f5eb3e7f..28bea2f9c7 100644 --- a/src/network/socket/qtcpserver.h +++ b/src/network/socket/qtcpserver.h @@ -69,8 +69,8 @@ public: void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; - void setListenBacklog(int size); - int listenBacklog() const; + void setListenBacklogSize(int size); + int listenBacklogSize() const; quint16 serverPort() const; QHostAddress serverAddress() const; |