From 4c19a8a984c39c7269cf497808735f147243800b Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Sat, 10 Dec 2022 17:32:42 +0100 Subject: CLI: Fix for long-lived sessions during high loads When there is a continuos stream of CLI commands, cli_get_command() always returns 1 (there is a new command). Anyway, the socket receive buffer was reset only when there was no command at all, leading to a strange behavior: after a while, the CLI receive buffer came to its end, then read() was called with zero size buffer, it returned 0 which was interpreted as EOF. The patch fixes that by resetting the buffer position after each command and moving remaining data at the beginning of buffer. Thanks to Maria Matejka for examining the bug and for the original bugfix. --- nest/cli.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nest/cli.h') diff --git a/nest/cli.h b/nest/cli.h index 8a3294c5..3596e37c 100644 --- a/nest/cli.h +++ b/nest/cli.h @@ -29,7 +29,7 @@ typedef struct cli { node n; /* Node in list of all log hooks */ pool *pool; void *priv; /* Private to sysdep layer */ - byte *rx_buf, *rx_pos, *rx_aux; /* sysdep */ + byte *rx_buf, *rx_pos; /* sysdep */ struct cli_out *tx_buf, *tx_pos, *tx_write; event *event; void (*cont)(struct cli *c); -- cgit v1.2.3