aboutsummaryrefslogtreecommitdiff
path: root/server.c
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2012-03-18 01:28:10 +0000
committerTiago Cunha <tcunha@gmx.com>2012-03-18 01:28:10 +0000
commit40b1d64ce77c532436c6769c65a2b98be56e91ad (patch)
treed8b2ed3827c037c7c98cf42e3e385f8188e882c7 /server.c
parent9b8fc982ec93096cd2cce3f755154359050a2afb (diff)
downloadrtmux-40b1d64ce77c532436c6769c65a2b98be56e91ad.tar.gz
rtmux-40b1d64ce77c532436c6769c65a2b98be56e91ad.tar.bz2
rtmux-40b1d64ce77c532436c6769c65a2b98be56e91ad.zip
Sync OpenBSD patchset 1043:
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 'server.c')
-rw-r--r--server.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/server.c b/server.c
index c442c666..bbfc133c 100644
--- a/server.c
+++ b/server.c
@@ -103,7 +103,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];
@@ -162,6 +162,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) {