From 93c6b66428f8493cc3b5bf6fb8c291c957a81b1d Mon Sep 17 00:00:00 2001 From: Yuki Furuta Date: Thu, 26 Sep 2024 13:53:04 -0700 Subject: [PATCH] Set env tmate_num_clients on client join/leave --- tmate-daemon-decoder.c | 2 ++ tmate-websocket.c | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/tmate-daemon-decoder.c b/tmate-daemon-decoder.c index 21721cd9a..339633afc 100644 --- a/tmate-daemon-decoder.c +++ b/tmate-daemon-decoder.c @@ -79,6 +79,8 @@ static void tmate_header(struct tmate_session *session, tmate_set_env("tmate_ssh", ssh_conn_str); free(ssh_conn_str); + tmate_set_env("tmate_num_clients", "0"); + tmate_send_client_ready(); } diff --git a/tmate-websocket.c b/tmate-websocket.c index d390e1092..ab87d7311 100644 --- a/tmate-websocket.c +++ b/tmate-websocket.c @@ -216,10 +216,25 @@ void tmate_websocket_exec(struct tmate_session *session, const char *command) pack(string, command); } +int tmate_set_num_clients() +{ + int num_clients = 0; + struct client *c; + TAILQ_FOREACH(c, &clients, entry) { + ++num_clients; + } + char *num_clients_str; + xasprintf(&num_clients_str, "%d", num_clients); + tmate_set_env("tmate_num_clients", num_clients_str); + free(num_clients_str); + tmate_debug("tmate_num_clients: %d", num_clients); +} + void tmate_notify_client_join(__unused struct tmate_session *session, struct client *c) { tmate_info("Client joined (cid=%d)", c->id); + tmate_set_num_clients(); if (!tmate_has_websocket()) return; @@ -241,6 +256,7 @@ void tmate_notify_client_left(__unused struct tmate_session *session, return; tmate_info("Client left (cid=%d)", c->id); + tmate_set_num_clients(); if (!tmate_has_websocket()) return;