diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index c5444b139e5..a7c6b16b192 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -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(); diff --git a/src/network/ssl/qsslsocket_schannel.cpp b/src/network/ssl/qsslsocket_schannel.cpp index 051eb3fc3f7..1c482f56d75 100644 --- a/src/network/ssl/qsslsocket_schannel.cpp +++ b/src/network/ssl/qsslsocket_schannel.cpp @@ -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;