diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-08-11 17:18:35 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-08-11 17:18:35 +0000 |
commit | f0635717b3e840a72a962a2014b18d84fac4c83a (patch) | |
tree | 579ab8805cc7d6784fb6c567dad3322a7b2a976e /server-fn.c | |
parent | 60db6e3df471142e4ee7773b9b4e9b0135d61dfc (diff) |
Switch tmux to use imsg. This is the last major change to make the
client-server protocol more resilient and make the protocol versioning work
properly. In future, the only things requiring a protocol version bump will be
changes in the message structs, and (when both client and server have this
change) mixing different versions should nicely report an error message.
As a side effect this also makes the code tidier, fixes a problem with the way
errors reported during server startup were handled, and supports fd passing
(which will be used in future).
Looked over by eric@, thanks.
Please note that mixing a client with this change with an older server or vice
versa may cause tmux to crash or hang - tmux should be completely exited before
upgrading.
Diffstat (limited to 'server-fn.c')
-rw-r--r-- | server-fn.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/server-fn.c b/server-fn.c index 6f6ed2c8..8d5d06bd 100644 --- a/server-fn.c +++ b/server-fn.c @@ -55,18 +55,12 @@ void server_write_client( struct client *c, enum msgtype type, const void *buf, size_t len) { - struct hdr hdr; + struct imsgbuf *ibuf = &c->ibuf; if (c->flags & CLIENT_BAD) return; - log_debug("writing %d to client %d", type, c->fd); - - hdr.type = type; - hdr.size = len; - - buffer_write(c->out, &hdr, sizeof hdr); - if (buf != NULL && len > 0) - buffer_write(c->out, buf, len); + log_debug("writing %d to client %d", type, c->ibuf.fd); + imsg_compose(ibuf, type, PROTOCOL_VERSION, -1, -1, (void *) buf, len); } void |