diff options
author | Alex Trotsenko <alex1973tr@gmail.com> | 2015-11-14 20:19:06 +0200 |
---|---|---|
committer | Alex Trotsenko <alex1973tr@gmail.com> | 2016-02-03 16:08:52 +0000 |
commit | 29af35f352348e5d526e7197e7f63968eb076d31 (patch) | |
tree | fe33312bc9f6fe22d7b4183e0054e85deb49226a /src/network | |
parent | 5b75a16e8f0f410ad1165dc8cff73c199ea5ac1c (diff) |
Simplify QAbstractSocket::readData()
It needed refactoring after prior changes (bf6897edb0,
1ce203d05a, 48a4a67e8d).
Change-Id: I06ee3f4f70db2a71acfc8e9c1da5b4ad7524179d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/socket/qabstractsocket.cpp | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 04b80569ee..933807cbe6 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -2414,30 +2414,17 @@ qint64 QAbstractSocket::readData(char *data, qint64 maxSize) { Q_D(QAbstractSocket); - // Check if the read notifier can be enabled again. - if (d->socketEngine && !d->socketEngine->isReadNotificationEnabled() && d->socketEngine->isValid()) - d->socketEngine->setReadNotificationEnabled(true); + // if we're not connected, return -1 indicating EOF + if (!d->socketEngine || !d->socketEngine->isValid() || d->state != QAbstractSocket::ConnectedState) + return maxSize ? qint64(-1) : qint64(0); - if (!maxSize) - return 0; - - // This is for a buffered QTcpSocket - if (d->isBuffered) - // if we're still connected, return 0 indicating there may be more data in the future - // if we're not connected, return -1 indicating EOF - return d->state == QAbstractSocket::ConnectedState ? qint64(0) : qint64(-1); - - if (!d->socketEngine) - return -1; // no socket engine is probably EOF - if (!d->socketEngine->isValid()) - return -1; // This is for unbuffered TCP when we already had been disconnected - if (d->state != QAbstractSocket::ConnectedState) - return -1; // This is for unbuffered TCP if we're not connected yet - qint64 readBytes = d->socketEngine->read(data, maxSize); + qint64 readBytes = (maxSize && !d->isBuffered) ? d->socketEngine->read(data, maxSize) + : qint64(0); if (readBytes == -2) { // -2 from the engine means no bytes available (EAGAIN) so read more later - return 0; - } else if (readBytes < 0) { + readBytes = 0; + } + if (readBytes < 0) { d->setError(d->socketEngine->error(), d->socketEngine->errorString()); d->resetSocketLayer(); d->state = QAbstractSocket::UnconnectedState; @@ -2452,7 +2439,6 @@ qint64 QAbstractSocket::readData(char *data, qint64 maxSize) readBytes); #endif return readBytes; - } /*! \reimp |