diff options
author | Martin Petersson <Martin.Petersson@nokia.com> | 2012-06-04 16:34:13 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-26 11:32:21 +0200 |
commit | 1ce203d05a952f039105d30968daf2eacae66be8 (patch) | |
tree | 3db7e1740e84550f4e7e2fb77ffcf8072d4af74d /src/network | |
parent | bf6897edb01c0d46fda5195e36bb529dbbf7e5dc (diff) |
QAbstractSocket: Enable readNotifier on read from buffer
This is needed for the QSslSocket. When we read on that socket we will
only read from the QIODevice buffer to get the unencrypted data.
So when the readNotifier has been turned off on the plainsocket there
is nothing to trigger it to be turned on again.
This will add a readData with zero size when we have read everything
from the buffer. This is so that we get a call into the socket to
check if the readNotifier should be turned on again.
Change-Id: I3b63e33de007db823e964480903186eb1b8caac2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/socket/qabstractsocket.cpp | 7 | ||||
-rw-r--r-- | src/network/socket/qlocalsocket_win.cpp | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 3959419fed..8f290f6e2f 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -2324,6 +2324,13 @@ 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 (!maxSize) + return 0; + // This is for a buffered QTcpSocket if (d->isBuffered && d->buffer.isEmpty()) // if we're still connected, return 0 indicating there may be more data in the future diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp index 35b0130afc..90c8fcec1e 100644 --- a/src/network/socket/qlocalsocket_win.cpp +++ b/src/network/socket/qlocalsocket_win.cpp @@ -200,6 +200,9 @@ qint64 QLocalSocket::readData(char *data, qint64 maxSize) { Q_D(QLocalSocket); + if (!maxSize) + return 0; + return d->pipeReader->read(data, maxSize); } |