mirror of
https://github.com/aria2/aria2.git
synced 2024-12-29 14:14:53 +00:00
Fix bug that signal handler does not work with libaria2
This commit fixes the bug that signal handler does not work with libaria2 when aria2::RUN_ONCE is passed to aria2::run().
This commit is contained in:
parent
450b4f467f
commit
85b102a2a0
@ -150,14 +150,22 @@ void executeCommand(std::deque<std::unique_ptr<Command>>& commands,
|
||||
namespace {
|
||||
class GlobalHaltRequestedFinalizer {
|
||||
public:
|
||||
GlobalHaltRequestedFinalizer() = default;
|
||||
~GlobalHaltRequestedFinalizer() { global::globalHaltRequested = 5; }
|
||||
GlobalHaltRequestedFinalizer(bool oneshot) : oneshot_(oneshot) {}
|
||||
~GlobalHaltRequestedFinalizer()
|
||||
{
|
||||
if (!oneshot_) {
|
||||
global::globalHaltRequested = 5;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
bool oneshot_;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
int DownloadEngine::run(bool oneshot)
|
||||
{
|
||||
GlobalHaltRequestedFinalizer ghrf;
|
||||
GlobalHaltRequestedFinalizer ghrf(oneshot);
|
||||
while (!commands_.empty() || !routineCommands_.empty()) {
|
||||
if (!commands_.empty()) {
|
||||
waitData();
|
||||
|
Loading…
Reference in New Issue
Block a user