server: re-introduce signal handler
This still needed to be ported from the old server code.
This commit is contained in:
@ -24,6 +24,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <atomic>
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <glib/gprintf.h>
|
#include <glib/gprintf.h>
|
||||||
@ -63,6 +64,33 @@ using namespace Sexp;
|
|||||||
|
|
||||||
using DocId = unsigned;
|
using DocId = unsigned;
|
||||||
|
|
||||||
|
static std::atomic<bool> MuTerminate{false};
|
||||||
|
|
||||||
|
static void
|
||||||
|
sig_handler (int sig)
|
||||||
|
{
|
||||||
|
MuTerminate = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
install_sig_handler (void)
|
||||||
|
{
|
||||||
|
struct sigaction action;
|
||||||
|
int i, sigs[] = { SIGINT, SIGHUP, SIGTERM, SIGPIPE };
|
||||||
|
|
||||||
|
MuTerminate = false;
|
||||||
|
|
||||||
|
action.sa_handler = sig_handler;
|
||||||
|
sigemptyset(&action.sa_mask);
|
||||||
|
action.sa_flags = SA_RESETHAND;
|
||||||
|
|
||||||
|
for (i = 0; i != G_N_ELEMENTS(sigs); ++i)
|
||||||
|
if (sigaction (sigs[i], &action, NULL) != 0)
|
||||||
|
g_critical ("set sigaction for %d failed: %s",
|
||||||
|
sigs[i], strerror (errno));;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct Context {
|
struct Context {
|
||||||
Context() {}
|
Context() {}
|
||||||
Context (MuStore *storearg): store{storearg} {
|
Context (MuStore *storearg): store{storearg} {
|
||||||
@ -754,6 +782,9 @@ help_handler (Context& context, const Parameters& params)
|
|||||||
static MuError
|
static MuError
|
||||||
index_msg_cb (MuIndexStats *stats, void *user_data)
|
index_msg_cb (MuIndexStats *stats, void *user_data)
|
||||||
{
|
{
|
||||||
|
if (MuTerminate)
|
||||||
|
return MU_STOP;
|
||||||
|
|
||||||
if (stats->_processed % 1000)
|
if (stats->_processed % 1000)
|
||||||
return MU_OK;
|
return MU_OK;
|
||||||
|
|
||||||
|
|||||||
@ -405,7 +405,6 @@ MY-ADDRESSES is a list of 'my' email addresses (see
|
|||||||
:cleanup ,cleanup
|
:cleanup ,cleanup
|
||||||
:lazy-check ,lazy-check)))
|
:lazy-check ,lazy-check)))
|
||||||
|
|
||||||
|
|
||||||
(defun mu4e~proc-mkdir (path)
|
(defun mu4e~proc-mkdir (path)
|
||||||
"Create a new maildir-directory at filesystem PATH."
|
"Create a new maildir-directory at filesystem PATH."
|
||||||
;;(mu4e~proc-send-command "cmd:mkdir path:%s" (mu4e~escape path))
|
;;(mu4e~proc-send-command "cmd:mkdir path:%s" (mu4e~escape path))
|
||||||
@ -469,7 +468,6 @@ Returns either (:update ... ) or (:error ) sexp, which are handled my
|
|||||||
:rename ,(and maildir mu4e-change-filenames-when-moving)
|
:rename ,(and maildir mu4e-change-filenames-when-moving)
|
||||||
:noview ,no-view))))
|
:noview ,no-view))))
|
||||||
|
|
||||||
|
|
||||||
(defun mu4e~proc-ping (&optional queries)
|
(defun mu4e~proc-ping (&optional queries)
|
||||||
"Sends a ping to the mu server, expecting a (:pong ...) in response.
|
"Sends a ping to the mu server, expecting a (:pong ...) in response.
|
||||||
QUERIES is a list of queries for the number of results with read/unread status
|
QUERIES is a list of queries for the number of results with read/unread status
|
||||||
@ -513,6 +511,5 @@ result will be delivered to the function registered as
|
|||||||
:images ,images
|
:images ,images
|
||||||
:decrypt ,decrypt)))
|
:decrypt ,decrypt)))
|
||||||
|
|
||||||
|
|
||||||
(provide 'mu4e-proc)
|
(provide 'mu4e-proc)
|
||||||
;;; mu4e-proc.el ends here
|
;;; mu4e-proc.el ends here
|
||||||
|
|||||||
Reference in New Issue
Block a user