mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-04 12:41:00 +02:00
BUG/MEDIUM: cli: prevent memory leak on write errors
Since the introduction of payload support on the CLI in 1.9-dev1 by
commit abbf60710 ("MEDIUM: cli: Add payload support"), a chunk is
temporarily allocated for the CLI to support defragmenting a payload
passed with a command. However it's only released when passing via
the CLI_ST_END state (i.e. on clean shutdown), but not on errors.
Something as trivial as:
$ while :; do ncat --send-only -U /path/to/cli <<< "show stat"; done
with a few hundreds of servers is enough see the number of allocated
trash chunks go through the roof in "show pools".
This needs to be backported as far as 2.0.
This commit is contained in:
parent
c31b200872
commit
18b2a9dd87
@ -832,6 +832,7 @@ static void cli_io_handler(struct appctx *appctx)
|
||||
*/
|
||||
si_shutw(si);
|
||||
free_trash_chunk(appctx->chunk);
|
||||
appctx->chunk = NULL;
|
||||
break;
|
||||
}
|
||||
else if (appctx->st0 == CLI_ST_GETREQ) {
|
||||
@ -1078,6 +1079,9 @@ static void cli_io_handler(struct appctx *appctx)
|
||||
*/
|
||||
static void cli_release_handler(struct appctx *appctx)
|
||||
{
|
||||
free_trash_chunk(appctx->chunk);
|
||||
appctx->chunk = NULL;
|
||||
|
||||
if (appctx->io_release) {
|
||||
appctx->io_release(appctx);
|
||||
appctx->io_release = NULL;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user