summaryrefslogtreecommitdiffstats
path: root/server.c
diff options
context:
space:
mode:
authornicm <nicm>2021-03-11 07:08:18 +0000
committernicm <nicm>2021-03-11 07:08:18 +0000
commitee0df1b8f8a9099fbd67a73c9fb20b89c64d6106 (patch)
treeccc065d063e1c1849b144767c26c11a3f9cc0277 /server.c
parent3eb91efba160eff0b077a5fee902edb632f7fdca (diff)
Tidy old jobs every hour instead of every 30 seconds.
Diffstat (limited to 'server.c')
-rw-r--r--server.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/server.c b/server.c
index a286e779..6ac08a4d 100644
--- a/server.c
+++ b/server.c
@@ -48,6 +48,7 @@ static int server_fd = -1;
static uint64_t server_client_flags;
static int server_exit;
static struct event server_ev_accept;
+static struct event server_ev_tidy;
struct cmd_find_state marked_pane;
@@ -151,15 +152,29 @@ fail:
return (-1);
}
+/* Tidy up every hour. */
+static void
+server_tidy_event(__unused int fd, __unused short events, __unused void *data)
+{
+ struct timeval tv = { .tv_sec = 3600 };
+ uint64_t t = get_timer();
+
+ format_tidy_jobs();
+
+ log_debug("%s: took %llu milliseconds", __func__, get_timer() - t);
+ evtimer_add(&server_ev_tidy, &tv);
+}
+
/* Fork new server. */
int
server_start(struct tmuxproc *client, int flags, struct event_base *base,
int lockfd, char *lockfile)
{
- int fd;
- sigset_t set, oldset;
- struct client *c = NULL;
- char *cause = NULL;
+ int fd;
+ sigset_t set, oldset;
+ struct client *c = NULL;
+ char *cause = NULL;
+ struct timeval tv = { .tv_sec = 3600 };
sigfillset(&set);
sigprocmask(SIG_BLOCK, &set, &oldset);
@@ -218,6 +233,9 @@ server_start(struct tmuxproc *client, int flags, struct event_base *base,
free(cause);
}
+ evtimer_set(&server_ev_tidy, server_tidy_event, NULL);
+ evtimer_add(&server_ev_tidy, &tv);
+
server_add_accept(0);
proc_loop(server_proc, server_loop);