diff --git a/Quotient/connection.cpp b/Quotient/connection.cpp index fbb494206..422d59b5c 100644 --- a/Quotient/connection.cpp +++ b/Quotient/connection.cpp @@ -211,10 +211,7 @@ void Connection::assumeIdentity(const QString& mxId, const QString& accessToken) d->completeSetup(job->userId()); }); connect(job, &BaseJob::failure, this, [this, job] { - if (job->error() == BaseJob::StatusCode::NetworkError) - emit networkError(job->errorString(), job->rawDataSample(), - job->maxRetries(), -1); - else + if (job->error() != BaseJob::StatusCode::NetworkError) emit loginError(job->errorString(), job->rawDataSample()); }); }); @@ -448,11 +445,6 @@ void Connection::sync(int timeout) d->syncJob = nullptr; emit syncDone(); }); - connect(job, &SyncJob::retryScheduled, this, - [this, job](int retriesTaken, int nextInMilliseconds) { - emit networkError(job->errorString(), job->rawDataSample(), - retriesTaken, nextInMilliseconds); - }); connect(job, &SyncJob::failure, this, [this, job] { // SyncJob persists with retries on transient errors; if it fails, // there's likely something serious enough to stop the loop. @@ -1624,6 +1616,11 @@ BaseJob* Connection::run(BaseJob* job, RunningPolicy runningPolicy) // Reparent to protect from #397, #398 and to prevent BaseJob* from being // garbage-collected if made by or returned to QML/JavaScript. job->setParent(this); + connect(job, &BaseJob::retryScheduled, this, + [this, job](int retriesTaken, int nextInMilliseconds) { + emit networkError(job->errorString(), job->rawDataSample(), + retriesTaken, nextInMilliseconds); + }); connect(job, &BaseJob::failure, this, &Connection::requestFailed); job->initiate(d->data.get(), runningPolicy & BackgroundRequest); return job; diff --git a/Quotient/connection.h b/Quotient/connection.h index 025919574..18c6eca5a 100644 --- a/Quotient/connection.h +++ b/Quotient/connection.h @@ -766,12 +766,12 @@ public Q_SLOTS: void stateChanged(); void loginError(QString message, QString details); - //! \brief A network request (job) started by callApi() has failed + //! \brief A network request (job) started by run() (including callApi()) has failed //! \param request the pointer to the failed job //! \sa callApi void requestFailed(Quotient::BaseJob* request); - //! \brief A network request (job) failed due to network problems + //! \brief A network request (job) started by run() (including callAPI()) failed due to network problems //! //! This is _only_ emitted when the job will retry on its own; //! once it gives up, requestFailed() will be emitted. diff --git a/Quotient/csapi/.whoami.cpp.swp b/Quotient/csapi/.whoami.cpp.swp new file mode 100644 index 000000000..4799cad9e Binary files /dev/null and b/Quotient/csapi/.whoami.cpp.swp differ diff --git a/Quotient/csapi/whoami.cpp b/Quotient/csapi/whoami.cpp index af0c5d313..6028f954f 100644 --- a/Quotient/csapi/whoami.cpp +++ b/Quotient/csapi/whoami.cpp @@ -17,4 +17,5 @@ GetTokenOwnerJob::GetTokenOwnerJob() makePath("/_matrix/client/v3", "/account/whoami")) { addExpectedKey("user_id"); + setMaxRetries(std::numeric_limits::max()); }