QSslSocket: implement skip() overload
As QAbstractSocket does not handle most cases for this socket type, we should override skip() in QSslSocketPrivate implementation. In unencrypted mode, QSslSocket should forward skipping to the plain socket. If a connection is secure, we just need to check the connection state. Change-Id: I56602c6427b8617e8a9f453809a30fb2914ad798 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This commit is contained in:
parent
06089a19e5
commit
ca49f133f0
@ -2644,6 +2644,20 @@ QByteArray QSslSocketPrivate::peek(qint64 maxSize)
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
qint64 QSslSocketPrivate::skip(qint64 maxSize)
|
||||
{
|
||||
if (mode == QSslSocket::UnencryptedMode && !autoStartHandshake)
|
||||
return plainSocket->skip(maxSize);
|
||||
|
||||
// In encrypted mode, the SSL backend writes decrypted data directly into the
|
||||
// QIODevice's read buffer. As this buffer is always emptied by the caller,
|
||||
// we need to wait for more incoming data.
|
||||
return (state == QAbstractSocket::ConnectedState) ? Q_INT64_C(0) : Q_INT64_C(-1);
|
||||
}
|
||||
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
|
@ -192,6 +192,7 @@ public:
|
||||
|
||||
virtual qint64 peek(char *data, qint64 maxSize) override;
|
||||
virtual QByteArray peek(qint64 maxSize) override;
|
||||
qint64 skip(qint64 maxSize) override;
|
||||
bool flush() override;
|
||||
|
||||
// Platform specific functions
|
||||
|
Loading…
Reference in New Issue
Block a user