diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2021-07-21 13:16:39 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska@appnovation.com> | 2021-07-21 13:16:39 +0000 |
| commit | 53d7f0de3feeb8ad93bb8c319c3f0f314c7d31cf (patch) | |
| tree | ba85733fc50c6f1ee56261cbd33328e4c78af435 /src/server/client.c | |
| parent | 89a440efc603e6d6c7fa85b01a5a904baff5cd26 (diff) | |
| download | s6-rc-53d7f0de3feeb8ad93bb8c319c3f0f314c7d31cf.tar.gz | |
New id/typenum mapping, monitor filter, cdb in db_load, etc.
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/server/client.c')
| -rw-r--r-- | src/server/client.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/server/client.c b/src/server/client.c index c69794f..29ee197 100644 --- a/src/server/client.c +++ b/src/server/client.c @@ -51,7 +51,7 @@ void client_yoink (client_t **c) client_t *prev = (*c)->prev ; if (prev) prev->next = (*c)->next ; else client_head = (*c)->next ; if ((*c)->next) (*c)->next->prev = prev ; - if (ismonitored(*c)) nmonitors-- ; + if (ismonitored(*c)) client_monitors-- ; client_free(*c) ; *c = prev ; client_connections-- ; @@ -134,6 +134,19 @@ void monitor_put (uint32_t v, char const *s, size_t len) { if (!client_monitors) return ; for (client_t *c = client_head ; c ; c = c->next) - if (ismonitored(c) && v >= c->monitor_verbosity && !textmessage_put(&c->monitor, s, len)) - strerr_diefu1sys("queue message to monitor") ; + if (ismonitored(c) && v >= c->monitor_verbosity) + if (!textmessage_put(&c->monitor, s, len)) + strerr_diefu1sys("queue message to monitor") ; +} + +void monitor_announce (uint32_t id, uint8_t state) +{ + char pack[6] = "E" ; + if (!client_monitors) return ; + uint32_pack_big(pack + 1, id) ; + pack[5] = state ; + for (client_t *c = client_head ; c ; c = c->next) + if (ismonitored(c) && bitarray_peek(c->monitor_filter, id)) + if (!textmessage_put(&c->monitor, pack, 6)) + strerr_diefu1sys("queue message to monitor") ; } |
