From 47cded3e6f271c86de65afee00a028cbe9826403 Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Sat, 29 Oct 2016 19:25:32 +0300 Subject: QSocks5SocketEngine: stop polling on UDP There is no need in additional polling, because readyRead() signal of the inner socket is directly connected to the slot which extracts the datagrams. Moreover, calling _q_udpSocketReadNotification() from the engine code might cause the spurious notifications both in the outer and inner sockets. Change-Id: Ibe75f5990e27b7460d628fa4a1ca4e64657e302c Reviewed-by: Timur Pocheptsov --- src/network/socket/qsocks5socketengine.cpp | 13 ------------- src/network/socket/qsocks5socketengine_p.h | 1 - 2 files changed, 14 deletions(-) (limited to 'src/network/socket') diff --git a/src/network/socket/qsocks5socketengine.cpp b/src/network/socket/qsocks5socketengine.cpp index a1a8e4649d..6db09f94cf 100644 --- a/src/network/socket/qsocks5socketengine.cpp +++ b/src/network/socket/qsocks5socketengine.cpp @@ -1270,13 +1270,6 @@ void QSocks5SocketEnginePrivate::_q_controlSocketStateChanged(QAbstractSocket::S } #ifndef QT_NO_UDPSOCKET -void QSocks5SocketEnginePrivate::checkForDatagrams() const -{ - // udp should be unbuffered so we need to do some polling at certain points - if (udpData->udpSocket->hasPendingDatagrams()) - const_cast(this)->_q_udpSocketReadNotification(); -} - void QSocks5SocketEnginePrivate::_q_udpSocketReadNotification() { QSOCKS5_D_DEBUG << "_q_udpSocketReadNotification()"; @@ -1610,8 +1603,6 @@ bool QSocks5SocketEngine::hasPendingDatagrams() const Q_D(const QSocks5SocketEngine); Q_INIT_CHECK(false); - d->checkForDatagrams(); - return !d->udpData->pendingDatagrams.isEmpty(); } @@ -1619,8 +1610,6 @@ qint64 QSocks5SocketEngine::pendingDatagramSize() const { Q_D(const QSocks5SocketEngine); - d->checkForDatagrams(); - if (!d->udpData->pendingDatagrams.isEmpty()) return d->udpData->pendingDatagrams.head().data.size(); return 0; @@ -1632,8 +1621,6 @@ qint64 QSocks5SocketEngine::readDatagram(char *data, qint64 maxlen, QIpPacketHea #ifndef QT_NO_UDPSOCKET Q_D(QSocks5SocketEngine); - d->checkForDatagrams(); - if (d->udpData->pendingDatagrams.isEmpty()) return 0; diff --git a/src/network/socket/qsocks5socketengine_p.h b/src/network/socket/qsocks5socketengine_p.h index 864b163489..ec50d71283 100644 --- a/src/network/socket/qsocks5socketengine_p.h +++ b/src/network/socket/qsocks5socketengine_p.h @@ -248,7 +248,6 @@ public: void _q_controlSocketReadNotification(); void _q_controlSocketError(QAbstractSocket::SocketError); #ifndef QT_NO_UDPSOCKET - void checkForDatagrams() const; void _q_udpSocketReadNotification(); #endif void _q_controlSocketBytesWritten(); -- cgit v1.2.3