mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-27 19:17:19 +02:00
Feature
- Protects against interrupt during critical DB commit and sync operations.
This commit is contained in:
parent
ada6e49dab
commit
88abd93e52
3 changed files with 39 additions and 0 deletions
|
@ -40,6 +40,7 @@ Features
|
||||||
+ New '_get' is a DOM accessor helper command.
|
+ New '_get' is a DOM accessor helper command.
|
||||||
+ New virtual tags (WEEK, MONTH, YEAR, PARENT).
|
+ New virtual tags (WEEK, MONTH, YEAR, PARENT).
|
||||||
+ Added the 'remaining' format for all date columns.
|
+ Added the 'remaining' format for all date columns.
|
||||||
|
+ Protects against interrupt during critical DB commit and sync operations.
|
||||||
|
|
||||||
Bugs
|
Bugs
|
||||||
+ #1195 Random seed not random enough - removed all random number code (thanks
|
+ #1195 Random seed not random enough - removed all random number code (thanks
|
||||||
|
|
19
src/TDB2.cpp
19
src/TDB2.cpp
|
@ -32,6 +32,7 @@
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <signal.h>
|
||||||
#include <Context.h>
|
#include <Context.h>
|
||||||
#include <Color.h>
|
#include <Color.h>
|
||||||
#include <Date.h>
|
#include <Date.h>
|
||||||
|
@ -610,6 +611,15 @@ void TDB2::modify (Task& task, bool add_to_backlog /* = true */)
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
void TDB2::commit ()
|
void TDB2::commit ()
|
||||||
{
|
{
|
||||||
|
// Ignore harmful signals.
|
||||||
|
signal (SIGHUP, SIG_IGN);
|
||||||
|
signal (SIGINT, SIG_IGN);
|
||||||
|
signal (SIGKILL, SIG_IGN);
|
||||||
|
signal (SIGPIPE, SIG_IGN);
|
||||||
|
signal (SIGTERM, SIG_IGN);
|
||||||
|
signal (SIGUSR1, SIG_IGN);
|
||||||
|
signal (SIGUSR2, SIG_IGN);
|
||||||
|
|
||||||
dump ();
|
dump ();
|
||||||
context.timer_commit.start ();
|
context.timer_commit.start ();
|
||||||
|
|
||||||
|
@ -618,6 +628,15 @@ void TDB2::commit ()
|
||||||
undo.commit ();
|
undo.commit ();
|
||||||
backlog.commit ();
|
backlog.commit ();
|
||||||
|
|
||||||
|
// Restore signal handling.
|
||||||
|
signal (SIGHUP, SIG_DFL);
|
||||||
|
signal (SIGINT, SIG_DFL);
|
||||||
|
signal (SIGKILL, SIG_DFL);
|
||||||
|
signal (SIGPIPE, SIG_DFL);
|
||||||
|
signal (SIGTERM, SIG_DFL);
|
||||||
|
signal (SIGUSR1, SIG_DFL);
|
||||||
|
signal (SIGUSR2, SIG_DFL);
|
||||||
|
|
||||||
context.timer_commit.stop ();
|
context.timer_commit.stop ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <cmake.h>
|
#include <cmake.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
#include <signal.h>
|
||||||
#include <Context.h>
|
#include <Context.h>
|
||||||
#include <TLSClient.h>
|
#include <TLSClient.h>
|
||||||
#include <Color.h>
|
#include <Color.h>
|
||||||
|
@ -131,6 +132,15 @@ int CmdSync::execute (std::string& output)
|
||||||
out << format (STRING_CMD_SYNC_PROGRESS, connection)
|
out << format (STRING_CMD_SYNC_PROGRESS, connection)
|
||||||
<< "\n";
|
<< "\n";
|
||||||
|
|
||||||
|
// Ignore harmful signals.
|
||||||
|
signal (SIGHUP, SIG_IGN);
|
||||||
|
signal (SIGINT, SIG_IGN);
|
||||||
|
signal (SIGKILL, SIG_IGN);
|
||||||
|
signal (SIGPIPE, SIG_IGN);
|
||||||
|
signal (SIGTERM, SIG_IGN);
|
||||||
|
signal (SIGUSR1, SIG_IGN);
|
||||||
|
signal (SIGUSR2, SIG_IGN);
|
||||||
|
|
||||||
Msg response;
|
Msg response;
|
||||||
if (send (connection, certificate, request, response))
|
if (send (connection, certificate, request, response))
|
||||||
{
|
{
|
||||||
|
@ -270,6 +280,15 @@ int CmdSync::execute (std::string& output)
|
||||||
out << "\n";
|
out << "\n";
|
||||||
output = out.str ();
|
output = out.str ();
|
||||||
|
|
||||||
|
// Restore signal handling.
|
||||||
|
signal (SIGHUP, SIG_DFL);
|
||||||
|
signal (SIGINT, SIG_DFL);
|
||||||
|
signal (SIGKILL, SIG_DFL);
|
||||||
|
signal (SIGPIPE, SIG_DFL);
|
||||||
|
signal (SIGTERM, SIG_DFL);
|
||||||
|
signal (SIGUSR1, SIG_DFL);
|
||||||
|
signal (SIGUSR2, SIG_DFL);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// Without GnuTLS found at compile time, there is no working sync command.
|
// Without GnuTLS found at compile time, there is no working sync command.
|
||||||
throw std::string (STRING_CMD_SYNC_NO_TLS);
|
throw std::string (STRING_CMD_SYNC_NO_TLS);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue