diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2008-06-07 07:33:03 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2008-06-07 07:33:03 +0000 |
commit | 2a2a9760eeb263066d5585e906124605e2697e2e (patch) | |
tree | 5c5f576dbd1da760d53e489d7dbbf454015ef93b | |
parent | d51f075a4e71cbde5f25cd22cf07d0b7691d4c6c (diff) |
Read from pipe to allow client to confirm and socket be closed.
-rw-r--r-- | TODO | 5 | ||||
-rw-r--r-- | server.c | 12 |
2 files changed, 10 insertions, 7 deletions
@@ -78,8 +78,7 @@ should not emulate it doing so - status bar customisation variables, show-activity, show-last-window - show-options -- let server die when last session does -- fix occasion start server problems - key binding bug: random changes? - test and fix wsvt25 -- activity/bell should be per-window not per-link +- activity/bell should be per-window not per-link?? what if it is cur win in + session not being watched? @@ -1,4 +1,4 @@ -/* $Id: server.c,v 1.59 2008-06-07 07:27:28 nicm Exp $ */ +/* $Id: server.c,v 1.60 2008-06-07 07:33:03 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -80,11 +80,14 @@ server_start(const char *path) default: close(pair[1]); - ch = 0; + ch = 0x00; if (read(pair[0], &ch, 1) == 1 && ch == 0xff) { close(pair[0]); return (0); } + ch = 0x00; + if (write(pair[1], &ch, 1) != 1) + fatal("write failed"); close(pair[0]); return (1); } @@ -147,8 +150,9 @@ server_start(const char *path) ch = 0xff; if (write(pair[1], &ch, 1) != 1) fatal("write failed"); - /* Don't close the socketpair fd on success. */ - + read(pair[1], &ch, 1); /* Ignore errors; just to wait before closing. */ + close(pair[1]); + n = server_main(path, fd); #ifdef DEBUG xmalloc_report(getpid(), "server"); |