mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 05:21:10 +00:00
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.
This commit is contained in:
12
server-fn.c
12
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
|
||||
|
Reference in New Issue
Block a user