Skip to content

Commit

Permalink
Correctly exit from web request
Browse files Browse the repository at this point in the history
  • Loading branch information
ClassicOldSong committed Aug 23, 2024
1 parent 94e0542 commit 29e20eb
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 44 deletions.
33 changes: 18 additions & 15 deletions src/confighttp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -627,24 +627,27 @@ namespace confighttp {

print_req(request);

// We do want to return here
std::thread quit_thread([]{
sleep(1000);
#ifdef _WIN32
// If we're running in a service, return a special status to
// tell it to terminate too, otherwise it will just respawn us.
if (GetConsoleWindow() == NULL) {
lifetime::exit_sunshine(ERROR_SHUTDOWN_IN_PROGRESS, true);
return;
}
#endif
BOOST_LOG(warning) << "Requested quit from config page!"sv;

#ifdef _WIN32
// If we're running in a service, return a special status to
// tell it to terminate too, otherwise it will just respawn us.
if (GetConsoleWindow() == NULL) {
lifetime::exit_sunshine(ERROR_SHUTDOWN_IN_PROGRESS, true);
} else
#endif
{
lifetime::exit_sunshine(0, true);
});

quit_thread.detach();
}

response->write();
// We do want to return here
// If user get a return, then the exit has failed.
// This might not be thread safe but we're exiting anyways
std::thread write_resp([response]{
sleep(5000);
response->write();
});
write_resp.detach();
}

void
Expand Down
15 changes: 6 additions & 9 deletions src_assets/common/assets/web/configs/tabs/General.vue
Original file line number Diff line number Diff line change
Expand Up @@ -129,21 +129,18 @@ function removeCmd(index) {
</button>
</div>

<!--hide_tray_controls-->
<!-- Hide Tray Controls -->
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="hide_tray_controls" v-model="config.hide_tray_controls" true-value="enabled" false-value="disabled"/>
<label for="qp" class="form-check-label">{{ $t('config.hide_tray_controls') }}</label>
<label for="hide_tray_controls" class="form-check-label">{{ $t('config.hide_tray_controls') }}</label>
<div class="form-text">{{ $t('config.hide_tray_controls_desc') }}</div>
</div>

<!-- Notify Pre-Releases -->
<div class="mb-3">
<label for="notify_pre_releases" class="form-label">{{ $t('config.notify_pre_releases') }}</label>
<select id="notify_pre_releases" class="form-select" v-model="config.notify_pre_releases">
<option value="disabled">{{ $t('_common.disabled') }}</option>
<option value="enabled">{{ $t('_common.enabled') }}</option>
</select>
<div class="form-text">{{ $t('config.notify_pre_releases_desc') }}</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="notify_pre_releases" v-model="config.notify_pre_releases" true-value="enabled" false-value="disabled"/>
<label for="notify_pre_releases" class="form-check-label">{{ $t('config.notify_pre_releases') }}</label>
<div class="form-text">{{ $t('config.notify_pre_releases_desc') }}</div>
</div>
</div>
</template>
Expand Down
23 changes: 3 additions & 20 deletions src_assets/common/assets/web/troubleshooting.html
Original file line number Diff line number Diff line change
Expand Up @@ -260,34 +260,17 @@ <h2 id="logs">{{ $t('troubleshooting.logs') }}</h2>
quit() {
if (window.confirm("Do you really want to quit Apollo? You'll not be able to start Apollo again if you have no other methods to operate your computer.")) {
this.serverQuitting = true;
const timeoutID = setTimeout(() => {
this.serverQuitting = false;
}, 5000);
fetch("/api/quit", {
method: "POST",
})
.then(() => {
clearTimeout(timeoutID);
return new Promise((resolve, reject) => {
setTimeout(() => {
fetch("/", {
signal: AbortSignal.timeout(1000)
}).then(() => {
reject();
}).catch(() => {
resolve();
})
}, 1000);
});
})
.then(() => {
this.serverQuitting = false;
this.serverQuit = true;
this.serverQuit = false;
alert("Exit failed!");
})
.catch(() => {
this.serverQuitting = false;
this.serverQuit = false;
alert("Exit failed!");
this.serverQuit = true;
});
}
}
Expand Down

0 comments on commit 29e20eb

Please sign in to comment.