diff options
author | Uwe Klotz <uklotz@mixxx.org> | 2021-01-07 11:07:54 +0100 |
---|---|---|
committer | Uwe Klotz <uklotz@mixxx.org> | 2021-01-07 11:38:16 +0100 |
commit | 821208f510e462716fecccbf86dc3c588237ea0c (patch) | |
tree | 14e331de4de3d3dfadc961c0af18d3d91c04f09b /src/network | |
parent | bd8ef583c72d2a462299040771d68319a0e523d8 (diff) |
WebTask: Send an aborted signal when task not started
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/networktask.cpp | 2 | ||||
-rw-r--r-- | src/network/networktask.h | 9 | ||||
-rw-r--r-- | src/network/webtask.cpp | 8 |
3 files changed, 13 insertions, 6 deletions
diff --git a/src/network/networktask.cpp b/src/network/networktask.cpp index 5bbb67e78b..9dc25df338 100644 --- a/src/network/networktask.cpp +++ b/src/network/networktask.cpp @@ -65,7 +65,7 @@ void NetworkTask::abort() { } void NetworkTask::emitAborted( - const QUrl& requestUrl) { + QUrl&& requestUrl) { VERIFY_OR_DEBUG_ASSERT( isSignalFuncConnected(&NetworkTask::networkError)) { kLogger.warning() diff --git a/src/network/networktask.h b/src/network/networktask.h index 1679b5cc02..4721fd2e98 100644 --- a/src/network/networktask.h +++ b/src/network/networktask.h @@ -49,8 +49,11 @@ class NetworkTask : public QObject { return isSignalConnected(signal); } + /// Send an aborted signal with the optional request URL if available. void emitAborted( - const QUrl& requestUrl); + QUrl&& requestUrl = QUrl{}); + + /// Send a signal after an aborted/timed out/failed network response. void emitNetworkError( QUrl&& requestUrl, QNetworkReply::NetworkError errorCode, @@ -89,8 +92,12 @@ class NetworkTask : public QObject { /// in memory as a dysfunctional zombie until its parent object /// is finally deleted. If no receiver is connected the task /// will be deleted implicitly. + + /// Client-side abort void aborted( const QUrl& requestUrl); + + /// Network or server-side abort/timeout/failure void networkError( const QUrl& requestUrl, QNetworkReply::NetworkError errorCode, diff --git a/src/network/webtask.cpp b/src/network/webtask.cpp index c3d0530d2d..8b8d0bec5d 100644 --- a/src/network/webtask.cpp +++ b/src/network/webtask.cpp @@ -138,6 +138,8 @@ void WebTask::slotStart(int timeoutMillis) { if (!m_pendingNetworkReplyWeakPtr) { kLogger.debug() << "Network task has not been started"; + m_state = State::Aborted; + emitAborted(); return; } m_state = State::Pending; @@ -185,8 +187,7 @@ void WebTask::slotAbort() { } doNetworkReplyAborted(pPendingNetworkReply); m_state = State::Aborted; - const auto requestUrl = pPendingNetworkReply->request().url(); - emitAborted(requestUrl); + emitAborted(pPendingNetworkReply->request().url()); } void WebTask::timerEvent(QTimerEvent* event) { @@ -266,8 +267,7 @@ void WebTask::slotNetworkReplyFinished() { << "Discarding obsolete network reply" << pFinishedNetworkReply; if (m_state == State::Aborting) { - const auto requestUrl = pPendingNetworkReply->request().url(); - emitAborted(requestUrl); + emitAborted(pPendingNetworkReply->request().url()); } else { // The request might have been aborted or timed out in the meantime. // The task is supposed to be in a final state at this point and a |