diff options
Diffstat (limited to 'src/network/socket')
-rw-r--r-- | src/network/socket/qabstractsocket.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qabstractsocketengine_p.h | 2 | ||||
-rw-r--r-- | src/network/socket/qhttpsocketengine.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qhttpsocketengine_p.h | 2 | ||||
-rw-r--r-- | src/network/socket/qlocalsocket_unix.cpp | 4 | ||||
-rw-r--r-- | src/network/socket/qnativesocketengine.cpp | 6 | ||||
-rw-r--r-- | src/network/socket/qnativesocketengine_p.h | 4 | ||||
-rw-r--r-- | src/network/socket/qnativesocketengine_unix.cpp | 10 | ||||
-rw-r--r-- | src/network/socket/qnativesocketengine_win.cpp | 12 | ||||
-rw-r--r-- | src/network/socket/qsctpserver.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qsctpsocket.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qsocks5socketengine.cpp | 6 | ||||
-rw-r--r-- | src/network/socket/qsocks5socketengine_p.h | 2 | ||||
-rw-r--r-- | src/network/socket/qtcpserver.cpp | 20 | ||||
-rw-r--r-- | src/network/socket/qtcpserver_p.h | 1 |
15 files changed, 46 insertions, 31 deletions
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 87607ef413..7d7db11e01 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -836,7 +836,7 @@ void QAbstractSocketPrivate::resolveProxy(const QString &hostname, quint16 port) } // return the first that we can use - for (const QNetworkProxy &p : qAsConst(proxies)) { + for (const QNetworkProxy &p : std::as_const(proxies)) { if (socketType == QAbstractSocket::UdpSocket && (p.capabilities() & QNetworkProxy::UdpTunnelingCapability) == 0) continue; diff --git a/src/network/socket/qabstractsocketengine_p.h b/src/network/socket/qabstractsocketengine_p.h index 4209a32ca7..7b1ec85802 100644 --- a/src/network/socket/qabstractsocketengine_p.h +++ b/src/network/socket/qabstractsocketengine_p.h @@ -98,7 +98,7 @@ public: virtual bool connectToHostByName(const QString &name, quint16 port) = 0; virtual bool bind(const QHostAddress &address, quint16 port) = 0; virtual bool listen(int backlog) = 0; - virtual int accept() = 0; + virtual qintptr accept() = 0; virtual void close() = 0; virtual qint64 bytesAvailable() const = 0; diff --git a/src/network/socket/qhttpsocketengine.cpp b/src/network/socket/qhttpsocketengine.cpp index 260484aaf3..6f93685d2a 100644 --- a/src/network/socket/qhttpsocketengine.cpp +++ b/src/network/socket/qhttpsocketengine.cpp @@ -164,7 +164,7 @@ bool QHttpSocketEngine::listen(int backlog) return false; } -int QHttpSocketEngine::accept() +qintptr QHttpSocketEngine::accept() { qWarning("Operation is not supported"); setError(QAbstractSocket::UnsupportedSocketOperationError, "Unsupported socket operation"_L1); diff --git a/src/network/socket/qhttpsocketengine_p.h b/src/network/socket/qhttpsocketengine_p.h index 77e3167ede..24ce2d50af 100644 --- a/src/network/socket/qhttpsocketengine_p.h +++ b/src/network/socket/qhttpsocketengine_p.h @@ -60,7 +60,7 @@ public: bool connectToHostByName(const QString &name, quint16 port) override; bool bind(const QHostAddress &address, quint16 port) override; bool listen(int backlog) override; - int accept() override; + qintptr accept() override; void close() override; qint64 bytesAvailable() const override; diff --git a/src/network/socket/qlocalsocket_unix.cpp b/src/network/socket/qlocalsocket_unix.cpp index 0c447e90a4..626d46d7bf 100644 --- a/src/network/socket/qlocalsocket_unix.cpp +++ b/src/network/socket/qlocalsocket_unix.cpp @@ -401,8 +401,8 @@ bool QLocalSocketPrivate::parseSockaddr(const struct ::sockaddr_un &addr, if (!name.isEmpty() && !toUtf16.hasError()) { //conversion encodes the trailing zeros. So, in case of non-abstract namespace we //chop them off as \0 character is not allowed in filenames - if (!abstractNamespace && (name.at(name.length() - 1) == QChar::fromLatin1('\0'))) { - int truncPos = name.length() - 1; + if (!abstractNamespace && (name.at(name.size() - 1) == QChar::fromLatin1('\0'))) { + int truncPos = name.size() - 1; while (truncPos > 0 && name.at(truncPos - 1) == QChar::fromLatin1('\0')) truncPos--; name.truncate(truncPos); diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp index 8e7f3d539b..44efe95428 100644 --- a/src/network/socket/qnativesocketengine.cpp +++ b/src/network/socket/qnativesocketengine.cpp @@ -679,7 +679,7 @@ bool QNativeSocketEngine::listen(int backlog) \sa bind(), listen() */ -int QNativeSocketEngine::accept() +qintptr QNativeSocketEngine::accept() { Q_D(QNativeSocketEngine); Q_CHECK_VALID_SOCKETLAYER(QNativeSocketEngine::accept(), -1); @@ -1255,7 +1255,7 @@ bool QReadNotifier::event(QEvent *e) class QWriteNotifier : public QSocketNotifier { public: - QWriteNotifier(int fd, QNativeSocketEngine *parent) + QWriteNotifier(qintptr fd, QNativeSocketEngine *parent) : QSocketNotifier(fd, QSocketNotifier::Write, parent) { engine = parent; } protected: @@ -1279,7 +1279,7 @@ bool QWriteNotifier::event(QEvent *e) class QExceptionNotifier : public QSocketNotifier { public: - QExceptionNotifier(int fd, QNativeSocketEngine *parent) + QExceptionNotifier(qintptr fd, QNativeSocketEngine *parent) : QSocketNotifier(fd, QSocketNotifier::Exception, parent) { engine = parent; } protected: diff --git a/src/network/socket/qnativesocketengine_p.h b/src/network/socket/qnativesocketengine_p.h index a9c6da1977..2f77c15cd2 100644 --- a/src/network/socket/qnativesocketengine_p.h +++ b/src/network/socket/qnativesocketengine_p.h @@ -103,7 +103,7 @@ public: bool connectToHostByName(const QString &name, quint16 port) override; bool bind(const QHostAddress &address, quint16 port) override; bool listen(int backlog) override; - int accept() override; + qintptr accept() override; void close() override; qint64 bytesAvailable() const override; @@ -225,7 +225,7 @@ public: bool nativeConnect(const QHostAddress &address, quint16 port); bool nativeBind(const QHostAddress &address, quint16 port); bool nativeListen(int backlog); - int nativeAccept(); + qintptr nativeAccept(); #ifndef QT_NO_NETWORKINTERFACE bool nativeJoinMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface); diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp index 2c2ea706e5..13db3e6232 100644 --- a/src/network/socket/qnativesocketengine_unix.cpp +++ b/src/network/socket/qnativesocketengine_unix.cpp @@ -559,7 +559,7 @@ bool QNativeSocketEnginePrivate::nativeListen(int backlog) return true; } -int QNativeSocketEnginePrivate::nativeAccept() +qintptr QNativeSocketEnginePrivate::nativeAccept() { int acceptedDescriptor = qt_safe_accept(socketDescriptor, nullptr, nullptr); if (acceptedDescriptor == -1) { @@ -605,7 +605,7 @@ int QNativeSocketEnginePrivate::nativeAccept() } } - return acceptedDescriptor; + return qintptr(acceptedDescriptor); } #ifndef QT_NO_NETWORKINTERFACE @@ -729,10 +729,10 @@ QNetworkInterface QNativeSocketEnginePrivate::nativeMulticastInterface() const if (v.s_addr != 0 && sizeofv >= QT_SOCKOPTLEN_T(sizeof(v))) { QHostAddress ipv4(ntohl(v.s_addr)); QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces(); - for (int i = 0; i < ifaces.count(); ++i) { + for (int i = 0; i < ifaces.size(); ++i) { const QNetworkInterface &iface = ifaces.at(i); QList<QNetworkAddressEntry> entries = iface.addressEntries(); - for (int j = 0; j < entries.count(); ++j) { + for (int j = 0; j < entries.size(); ++j) { const QNetworkAddressEntry &entry = entries.at(j); if (entry.ip() == ipv4) return iface; @@ -752,7 +752,7 @@ bool QNativeSocketEnginePrivate::nativeSetMulticastInterface(const QNetworkInter struct in_addr v; if (iface.isValid()) { QList<QNetworkAddressEntry> entries = iface.addressEntries(); - for (int i = 0; i < entries.count(); ++i) { + for (int i = 0; i < entries.size(); ++i) { const QNetworkAddressEntry &entry = entries.at(i); const QHostAddress &ip = entry.ip(); if (ip.protocol() == QAbstractSocket::IPv4Protocol) { diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp index 13fe03afa2..f3a0a06668 100644 --- a/src/network/socket/qnativesocketengine_win.cpp +++ b/src/network/socket/qnativesocketengine_win.cpp @@ -773,10 +773,10 @@ bool QNativeSocketEnginePrivate::nativeListen(int backlog) return true; } -int QNativeSocketEnginePrivate::nativeAccept() +qintptr QNativeSocketEnginePrivate::nativeAccept() { - int acceptedDescriptor = WSAAccept(socketDescriptor, 0,0,0,0); - if (acceptedDescriptor == -1) { + SOCKET acceptedDescriptor = WSAAccept(socketDescriptor, 0,0,0,0); + if (acceptedDescriptor == INVALID_SOCKET) { int err = WSAGetLastError(); switch (err) { case WSAEACCES: @@ -810,7 +810,7 @@ int QNativeSocketEnginePrivate::nativeAccept() setError(QAbstractSocket::UnknownSocketError, UnknownSocketErrorString); break; } - } else if (acceptedDescriptor != -1 && QAbstractEventDispatcher::instance()) { + } else if (acceptedDescriptor != INVALID_SOCKET && QAbstractEventDispatcher::instance()) { // Because of WSAAsyncSelect() WSAAccept returns a non blocking socket // with the same attributes as the listening socket including the current // WSAAsyncSelect(). To be able to change the socket to blocking mode the @@ -820,9 +820,9 @@ int QNativeSocketEnginePrivate::nativeAccept() n.setEnabled(false); } #if defined (QNATIVESOCKETENGINE_DEBUG) - qDebug("QNativeSocketEnginePrivate::nativeAccept() == %i", acceptedDescriptor); + qDebug("QNativeSocketEnginePrivate::nativeAccept() == %lld", qint64(acceptedDescriptor)); #endif - return acceptedDescriptor; + return qintptr(acceptedDescriptor); } static bool multicastMembershipHelper(QNativeSocketEnginePrivate *d, diff --git a/src/network/socket/qsctpserver.cpp b/src/network/socket/qsctpserver.cpp index 4e61a6c6bd..cd060d93e8 100644 --- a/src/network/socket/qsctpserver.cpp +++ b/src/network/socket/qsctpserver.cpp @@ -46,7 +46,7 @@ between endpoints. Call nextPendingDatagramConnection() to accept the pending datagram-mode connection as a connected QSctpSocket. - \note This feature is not supported on the Windows platform. + \note This class is not supported on the Windows platform. \sa QTcpServer, QSctpSocket, QAbstractSocket */ diff --git a/src/network/socket/qsctpsocket.cpp b/src/network/socket/qsctpsocket.cpp index 546c2d18bf..27c6fc930c 100644 --- a/src/network/socket/qsctpsocket.cpp +++ b/src/network/socket/qsctpsocket.cpp @@ -74,7 +74,7 @@ etc. is allowed in datagram mode with the same limitations as in continuous byte stream mode. - \note This feature is not supported on the Windows platform. + \note This class is not supported on the Windows platform. \sa QSctpServer, QTcpSocket, QAbstractSocket */ diff --git a/src/network/socket/qsocks5socketengine.cpp b/src/network/socket/qsocks5socketengine.cpp index 8e1f9a5e34..b1bca2bf4d 100644 --- a/src/network/socket/qsocks5socketengine.cpp +++ b/src/network/socket/qsocks5socketengine.cpp @@ -154,11 +154,11 @@ static bool qt_socks5_set_host_name_and_port(const QString &hostname, quint16 po QByteArray encodedHostName = QUrl::toAce(hostname); QByteArray &buf = *pBuf; - if (encodedHostName.length() > 255) + if (encodedHostName.size() > 255) return false; buf.append(S5_DOMAINNAME); - buf.append(uchar(encodedHostName.length())); + buf.append(uchar(encodedHostName.size())); buf.append(encodedHostName); // add port @@ -1379,7 +1379,7 @@ bool QSocks5SocketEngine::listen(int backlog) return false; } -int QSocks5SocketEngine::accept() +qintptr QSocks5SocketEngine::accept() { Q_D(QSocks5SocketEngine); // check we are listing --- diff --git a/src/network/socket/qsocks5socketengine_p.h b/src/network/socket/qsocks5socketengine_p.h index 3d9ccf0ba1..c446f47184 100644 --- a/src/network/socket/qsocks5socketengine_p.h +++ b/src/network/socket/qsocks5socketengine_p.h @@ -46,7 +46,7 @@ public: bool connectToHostByName(const QString &name, quint16 port) override; bool bind(const QHostAddress &address, quint16 port) override; bool listen(int backlog) override; - int accept() override; + qintptr accept() override; void close() override; qint64 bytesAvailable() const override; diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp index 95d1877a5d..cc748b9d7a 100644 --- a/src/network/socket/qtcpserver.cpp +++ b/src/network/socket/qtcpserver.cpp @@ -133,7 +133,7 @@ QNetworkProxy QTcpServerPrivate::resolveProxy(const QHostAddress &address, quint } // return the first that we can use - for (const QNetworkProxy &p : qAsConst(proxies)) { + for (const QNetworkProxy &p : std::as_const(proxies)) { if (socketType == QAbstractSocket::TcpSocket && (p.capabilities() & QNetworkProxy::ListeningCapability) != 0) return p; @@ -172,7 +172,7 @@ void QTcpServerPrivate::readNotification() { Q_Q(QTcpServer); for (;;) { - if (pendingConnections.count() >= maxConnections) { + if (totalPendingConnections() >= maxConnections) { #if defined (QTCPSERVER_DEBUG) qDebug("QTcpServerPrivate::_q_processIncomingConnection() too many connections"); #endif @@ -181,7 +181,7 @@ void QTcpServerPrivate::readNotification() return; } - int descriptor = socketEngine->accept(); + qintptr descriptor = socketEngine->accept(); if (descriptor == -1) { if (socketEngine->error() != QAbstractSocket::TemporaryError) { q->pauseAccepting(); @@ -206,6 +206,20 @@ void QTcpServerPrivate::readNotification() } /*! + \internal + Return the amount of sockets currently in queue for the server. + This is to make maxPendingConnections work properly with servers that don't + necessarily have 'ready-to-go' sockets as soon as they connect, + e.g. QSslServer. + By default we just return pendingConnections.size(), which is equivalent to + what it did before. +*/ +int QTcpServerPrivate::totalPendingConnections() const +{ + return int(pendingConnections.size()); +} + +/*! Constructs a QTcpServer object. \a parent is passed to the QObject constructor. diff --git a/src/network/socket/qtcpserver_p.h b/src/network/socket/qtcpserver_p.h index a526549538..853a4aaf96 100644 --- a/src/network/socket/qtcpserver_p.h +++ b/src/network/socket/qtcpserver_p.h @@ -56,6 +56,7 @@ public: #endif virtual void configureCreatedSocket(); + virtual int totalPendingConnections() const; // from QAbstractSocketEngineReceiver void readNotification() override; |