QSslSocket: Don't call 'transmit' in unencrypted mode
At the same time I'll add a generic protection against being called in unprotected mode in the schannel backend (openssl already has it in a different form). Change-Id: I97c1be6239c27e306de0af7ad568fbcfde09da71 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit f8badeda72813ee4d32e7672c4a98373cb7b5d60) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
fc794d7622
commit
e9eb05b5b7
@ -2326,7 +2326,7 @@ void QSslSocketPrivate::_q_errorSlot(QAbstractSocket::SocketError error)
|
||||
qCDebug(lcSsl) << "\terrorString =" << q->errorString();
|
||||
#endif
|
||||
// this moves encrypted bytes from plain socket into our buffer
|
||||
if (plainSocket->bytesAvailable()) {
|
||||
if (plainSocket->bytesAvailable() && mode != QSslSocket::UnencryptedMode) {
|
||||
qint64 tmpReadBufferMaxSize = readBufferMaxSize;
|
||||
readBufferMaxSize = 0; // reset temporarily so the plain sockets completely drained drained
|
||||
transmit();
|
||||
|
@ -1325,6 +1325,9 @@ void QSslSocketBackendPrivate::transmit()
|
||||
{
|
||||
Q_Q(QSslSocket);
|
||||
|
||||
if (mode == QSslSocket::UnencryptedMode)
|
||||
return; // This function should not have been called
|
||||
|
||||
// Can happen if called through QSslSocket::abort->QSslSocket::close->QSslSocket::flush->here
|
||||
if (plainSocket->state() == QAbstractSocket::SocketState::UnconnectedState)
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user