summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/server.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2012-03-09 09:57:40 +0000
committernicm <nicm@openbsd.org>2012-03-09 09:57:40 +0000
commit549634dfad514cb4f8751be7718bab5fd7241672 (patch)
tree3d20852cba80dfa35e14d0e664429619bda1157d /usr.bin/tmux/server.c
parent- remove a redundant note about tftpd; ok dlg (diff)
downloadwireguard-openbsd-549634dfad514cb4f8751be7718bab5fd7241672.tar.xz
wireguard-openbsd-549634dfad514cb4f8751be7718bab5fd7241672.zip
Use a lock file and flock() to serialize server start, avoids problems
when running a bunch of tmux from cron at the same time. Based on a diff from Tim Ruehsen.
Diffstat (limited to 'usr.bin/tmux/server.c')
-rw-r--r--usr.bin/tmux/server.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.bin/tmux/server.c b/usr.bin/tmux/server.c
index 876fe320f15..e990955ce72 100644
--- a/usr.bin/tmux/server.c
+++ b/usr.bin/tmux/server.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server.c,v 1.102 2011/03/27 20:27:26 nicm Exp $ */
+/* $OpenBSD: server.c,v 1.103 2012/03/09 09:57:40 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -104,7 +104,7 @@ server_create_socket(void)
/* Fork new server. */
int
-server_start(void)
+server_start(int lockfd, char *lockfile)
{
struct window_pane *wp;
int pair[2];
@@ -161,6 +161,10 @@ server_start(void)
server_fd = server_create_socket();
server_client_create(pair[1]);
+ unlink(lockfile);
+ xfree(lockfile);
+ close(lockfd);
+
if (access(SYSTEM_CFG, R_OK) == 0)
load_cfg(SYSTEM_CFG, NULL, &cfg_causes);
else if (errno != ENOENT) {