mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2026-07-06 21:36:58 +03:00
[Backport release-10.x] Fix InstanceStaging reentry crash during Modrinth pack updates (#5048)
This commit is contained in:
commit
074c54749b
2 changed files with 8 additions and 0 deletions
|
|
@ -928,6 +928,7 @@ class InstanceStaging : public Task {
|
|||
connect(child, &Task::progress, this, &InstanceStaging::setProgress);
|
||||
connect(child, &Task::stepProgress, this, &InstanceStaging::propagateStepProgress);
|
||||
connect(&m_backoffTimer, &QTimer::timeout, this, &InstanceStaging::childSucceeded);
|
||||
m_backoffTimer.setSingleShot(true);
|
||||
}
|
||||
|
||||
virtual ~InstanceStaging() {}
|
||||
|
|
@ -959,13 +960,17 @@ class InstanceStaging : public Task {
|
|||
private slots:
|
||||
void childSucceeded()
|
||||
{
|
||||
if (!isRunning())
|
||||
return;
|
||||
unsigned sleepTime = backoff();
|
||||
if (m_parent->commitStagedInstance(m_stagingPath, *m_child.get(), m_child->group(), *m_child.get())) {
|
||||
m_backoffTimer.stop();
|
||||
emitSucceeded();
|
||||
return;
|
||||
}
|
||||
// we actually failed, retry?
|
||||
if (sleepTime == maxBackoff) {
|
||||
m_backoffTimer.stop();
|
||||
emitFailed(tr("Failed to commit instance, even after multiple retries. It is being blocked by something."));
|
||||
return;
|
||||
}
|
||||
|
|
@ -974,12 +979,14 @@ class InstanceStaging : public Task {
|
|||
}
|
||||
void childFailed(const QString& reason)
|
||||
{
|
||||
m_backoffTimer.stop();
|
||||
m_parent->destroyStagingPath(m_stagingPath);
|
||||
emitFailed(reason);
|
||||
}
|
||||
|
||||
void childAborted()
|
||||
{
|
||||
m_backoffTimer.stop();
|
||||
m_parent->destroyStagingPath(m_stagingPath);
|
||||
emitAborted();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ void EntitlementsStep::perform()
|
|||
{ "Authorization", QString("Bearer %1").arg(m_data->yggdrasilToken.token).toUtf8() } };
|
||||
|
||||
m_response.reset(new QByteArray());
|
||||
m_request = Net::Download::makeByteArray(url, m_response.get());
|
||||
m_request->addHeaderProxy(std::make_unique<Net::RawHeaderProxy>(headers));
|
||||
m_request->enableAutoRetry(true);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue