From 06ecc1a78ddd2be28b317dd13b4d17bbc6b910ab Mon Sep 17 00:00:00 2001 From: Aki Tuomi <aki.tuomi@open-xchange.com> Date: Tue, 31 Jan 2023 15:04:08 +0200 Subject: [PATCH] managesieve: Add per-command byte-counters --- src/managesieve/managesieve-client.c | 10 +++++++++- src/managesieve/managesieve-client.h | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c index 8404b9143..6bdba1cd2 100644 --- a/src/managesieve/managesieve-client.c +++ b/src/managesieve/managesieve-client.c @@ -378,9 +378,15 @@ void client_send_response(struct client *client, const char *oknobye, struct event_passthrough * client_command_create_finish_event(struct client_command_context *cmd) { + uint64_t bytes_in = i_stream_get_absolute_offset(cmd->client->input) - + cmd->stats.bytes_in; + uint64_t bytes_out = cmd->client->output->offset - cmd->stats.bytes_out; + struct event_passthrough *e = event_create_passthrough(cmd->event)-> - set_name("managesieve_command_finished"); + set_name("managesieve_command_finished")-> + add_int("net_in_bytes", bytes_in)-> + add_int("net_out_bytes", bytes_out); return e; } @@ -683,6 +689,8 @@ static bool client_handle_input(struct client_command_context *cmd) i_assert(!client->disconnected); event_add_str(cmd->event, "cmd_name", t_str_ucase(cmd->name)); + cmd->stats.bytes_in = i_stream_get_absolute_offset(client->input); + cmd->stats.bytes_out = client->output->offset; client_handle_input(cmd); } diff --git a/src/managesieve/managesieve-client.h b/src/managesieve/managesieve-client.h index f674aa618..a4032419a 100644 --- a/src/managesieve/managesieve-client.h +++ b/src/managesieve/managesieve-client.h @@ -21,6 +21,10 @@ struct client_command_context { client sent them. */ const char *args; + struct { + uint64_t bytes_in; + uint64_t bytes_out; + } stats; command_func_t *func; void *context; -- GitLab