diff --git a/tmate-proxy.c b/tmate-proxy.c index c8b4606b..7af94a78 100644 --- a/tmate-proxy.c +++ b/tmate-proxy.c @@ -196,6 +196,8 @@ void tmate_notify_client_join(__unused struct tmate_session *session, if (!tmate_has_proxy()) return; + c->flags |= CLIENT_TMATE_NOTIFIED_JOIN; + pack(array, 5); pack(int, TMATE_CTL_CLIENT_JOIN); pack(int, c->id); @@ -212,6 +214,11 @@ void tmate_notify_client_left(__unused struct tmate_session *session, if (!tmate_has_proxy()) return; + if (!(c->flags & CLIENT_TMATE_NOTIFIED_JOIN)) + return; + + c->flags &= ~CLIENT_TMATE_NOTIFIED_JOIN; + pack(array, 2); pack(int, TMATE_CTL_CLIENT_LEFT); pack(int, c->id); diff --git a/tmux.h b/tmux.h index e4fc5824..01575cc9 100644 --- a/tmux.h +++ b/tmux.h @@ -1280,6 +1280,9 @@ struct client { #define CLIENT_256COLOURS 0x20000 #define CLIENT_IDENTIFIED 0x40000 #define CLIENT_STATUSFORCE 0x80000 +#ifdef TMATE_SLAVE +#define CLIENT_TMATE_NOTIFIED_JOIN 0x10000000 +#endif int flags; struct key_table *keytable;