The issue has been seen while working on the latest WebKit using MiniBrowser.
The urls used:
https://mobile.twitter.com - you have to use iPhone User Agent string
https://litmus.mozilla.org - default User Agent string
The symptoms are that progress bar is not reached the end and content either not rendered at all or rendered but some images are missing.
After further investigation the following has been determined:
In all case HTTP header Connection:close is present.
The server closes connection immediately after all
data is sent. Meanwhile we are in the QSslSocketBackendPrivate::transmit()
and trying to do q_SSL_read() sometime we are getting
SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE errors which suggest that we
have to do another attempt. About that time we are getting our socket
closed and it seems that q_SSL_read() never has a chance to read rest
of the data.
From the log (attached) it can be seen that native socket read 2617 bytes.
(line 1673 in the log):
QNativeSocketEnginePrivate::nativeRead: 2617 bytes from socket 14
then we put 1024 bytes to BIO and than q_SSL_read() returned -1 with
SSL_ERROR_WANT_READ error and we are exiting from the while loop
(since transmitting is false) and from transmit(). Since connection is
getting closed we never return to transmit() and never get rest of the
|For Gerrit Dashboard: QTBUG-23607|
|14675,1||Prevent data loss when an ssl socket is closed by remote||master||qt/qtbase||Status: MERGED||+2||0|
|15019,1||Prevent data loss when an ssl socket is closed by remote||4.8||qt/qt||Status: MERGED||+2||0|
|15020,1||Prevent data loss when an ssl socket is closed by remote||4.8.0-symbian||qt/qt||Status: MERGED||+2||0|