diff options
author | Andy Shaw <andy.shaw@qt.io> | 2020-02-07 15:00:55 +0100 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2020-02-12 22:48:51 +0100 |
commit | 5234c6c6a8b8ee7cc33dde41c37dd3866c99405b (patch) | |
tree | 06954296ca7ebfe4665c8dea8cd93a631bf832ff /src/network/access/qhttpthreaddelegate.cpp | |
parent | a82f9f1a1d7a9a0bd0ceebac6a2bc765b01877e5 (diff) |
Account for a reply that is finished before we can connect the signals
In a case where a connection is refused, then it is possible for it to
fail at the time that the QHttpNetworkReply is being created and
therefore after the connections have been made it would have already
emitted the signal to indicate it was finished with an error.
To account for this, then it checks if there is an error code set on
the reply and if there is then it will call the relevant slot right away.
Fixes: QTBUG-57799
Change-Id: I4e73e5c82092c09f825343d18db40b47c3cdb9ac
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src/network/access/qhttpthreaddelegate.cpp')
-rw-r--r-- | src/network/access/qhttpthreaddelegate.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/network/access/qhttpthreaddelegate.cpp b/src/network/access/qhttpthreaddelegate.cpp index 63a3c4f204..de14260d69 100644 --- a/src/network/access/qhttpthreaddelegate.cpp +++ b/src/network/access/qhttpthreaddelegate.cpp @@ -428,6 +428,12 @@ void QHttpThreadDelegate::startRequest() connect(httpReply, SIGNAL(cacheCredentials(QHttpNetworkRequest,QAuthenticator*)), this, SLOT(cacheCredentialsSlot(QHttpNetworkRequest,QAuthenticator*))); + if (httpReply->errorCode() != QNetworkReply::NoError) { + if (synchronous) + synchronousFinishedWithErrorSlot(httpReply->errorCode(), httpReply->errorString()); + else + finishedWithErrorSlot(httpReply->errorCode(), httpReply->errorString()); + } } // This gets called from the user thread or by the synchronous HTTP timeout timer |