Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-47471

QNetworkReply::abort flushes QSslSocket

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • None
    • 5.5.0
    • Network: SSL
    • None
    • Ubuntu 14.04 with Qt 5.5.0
    • f98c2ef27a4f6fa3b7e9c35cf7896abc4b22816b

    Description

      When performing a HTTPS-GET and call QNetworkReply::abort() in a slot connected to the signal QNetworkReply::encrypted(), the GET is performed, because the QSslSocket is flushed before closing.

      The following is the output of the attached sample with a Qt-build with defined QSSLSOCKET_DEBUG and QT_DECRYPT_SSL_TRAFFIC:

      qt.network.ssl: QSslSocket::QSslSocket( QObject(0x0) ), this = 0x7fa8d40050b0
      qt.network.ssl: QSslSocket::connectToHost( "www.google.de" , 443 , OpenMode( "ReadOnly|WriteOnly" ) )
      qt.network.ssl: creating internal plain socket
      qt.network.ssl: QSslSocket::_q_stateChangedSlot( QAbstractSocket::HostLookupState )
      qt.network.ssl: QSslSocket::_q_stateChangedSlot( QAbstractSocket::ConnectingState )
      qt.network.ssl: QSslSocket::_q_stateChangedSlot( QAbstractSocket::ConnectedState )
      qt.network.ssl: QSslSocket::_q_connectedSlot()
      qt.network.ssl: state = QAbstractSocket::ConnectedState
      qt.network.ssl: peer = "www.google.de" QHostAddress("") 443
      qt.network.ssl: local = "10.211.4.4" QHostAddress("10.211.4.4") 38897
      qt.network.ssl: QSslSocket::startClientEncryption()
      qt.network.ssl: QSslSocketBackendPrivate::transmit: wrote 517 encrypted bytes to the socket 517 actual.
      qt.network.ssl: QSslSocketBackendPrivate::transmit: testing encryption
      qt.network.ssl: QSslSocketBackendPrivate::transmit: encryption not done yet
      qt.network.ssl: QSslSocketBackendPrivate::transmit: testing encryption
      qt.network.ssl: QSslSocketBackendPrivate::transmit: encryption not done yet
      qt.network.ssl: QSslSocket::_q_bytesWrittenSlot( 517 )
      qt.network.ssl: QSslSocket::_q_readyReadSlot() - 1448 bytes available
      qt.network.ssl: QSslSocketBackendPrivate::transmit: read 1448 encrypted bytes from the socket
      qt.network.ssl: QSslSocketBackendPrivate::transmit: testing encryption
      qt.network.ssl: QSslSocketBackendPrivate::transmit: encryption not done yet
      qt.network.ssl: QSslSocketBackendPrivate::transmit: testing encryption
      qt.network.ssl: QSslSocketBackendPrivate::transmit: encryption not done yet
      qt.network.ssl: QSslSocket::_q_readyReadSlot() - 2043 bytes available
      qt.network.ssl: QSslSocketBackendPrivate::transmit: read 2043 encrypted bytes from the socket
      qt.network.ssl: QSslSocketBackendPrivate::transmit: testing encryption
      qt.network.ssl: QSslSocketBackendPrivate::transmit: encryption not done yet
      qt.network.ssl: QSslSocketBackendPrivate::transmit: wrote 126 encrypted bytes to the socket 126 actual.
      qt.network.ssl: QSslSocketBackendPrivate::transmit: testing encryption
      qt.network.ssl: QSslSocketBackendPrivate::transmit: encryption not done yet
      qt.network.ssl: QSslSocketBackendPrivate::transmit: testing encryption
      qt.network.ssl: QSslSocketBackendPrivate::transmit: encryption not done yet
      qt.network.ssl: QSslSocket::_q_bytesWrittenSlot( 126 )
      qt.network.ssl: QSslSocket::_q_readyReadSlot() - 246 bytes available
      qt.network.ssl: QSslSocketBackendPrivate::transmit: read 246 encrypted bytes from the socket
      qt.network.ssl: QSslSocketBackendPrivate::transmit: testing encryption
      qt.network.ssl: QSslSocketBackendPrivate::transmit: encryption established
      Finished "Operation canceled"
      Aborted
      qt.network.ssl: QSslSocket::writeData( 0x7fa8d401dcf8 , 149 )
      qt.network.ssl: QSslSocket::close()
      qt.network.ssl: QSslSocket::flush()
      qt.network.ssl: QSslSocketBackendPrivate::transmit: encrypted 149 bytes
      qt.network.ssl: QSslSocketBackendPrivate::transmit: wrote 178 encrypted bytes to the socket 178 actual.
      qt.network.ssl: QSslSocket::_q_bytesWrittenSlot( 178 )
      qt.network.ssl: QSslSocket::_q_stateChangedSlot( QAbstractSocket::ClosingState )
      qt.network.ssl: QSslSocket::disconnectFromHost()
      QIODevice::write (QTcpSocket): device not open
      qt.network.ssl: QSslSocketBackendPrivate::transmit: wrote 31 encrypted bytes to the socket -1 actual.
      qt.network.ssl: QSslSocket::close()
      qt.network.ssl: QSslSocket::disconnectFromHost()
      qt.network.ssl: QSslSocket::_q_stateChangedSlot( QAbstractSocket::UnconnectedState )
      qt.network.ssl: QSslSocket::_q_disconnectedSlot()
      qt.network.ssl: state = QAbstractSocket::UnconnectedState

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            richmoore Richard Moore (qtnetwork)
            sebastianloesch Sebastian Lösch
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes