MINOR: cli: extend the CLI context with a list and two offsets

Some CLI parsers are currently abusing the CLI context types such as
pointers to stuff longs into them by lack of room. But the context is
80 bytes while cli is only 48, thus there's some room left. This patch
adds a list element and two size_t usable as various offsets. The list
element is initialized.
This commit is contained in:
Willy Tarreau 2019-08-30 08:05:03 +02:00
parent 13696ffba2
commit 300decc8d9
2 changed files with 5 additions and 2 deletions

View File

@ -105,8 +105,10 @@ struct appctx {
const char *msg; /* pointer to a persistent message to be returned in CLI_ST_PRINT state */
int severity; /* severity of the message to be returned according to (syslog) rfc5424 */
char *err; /* pointer to a 'must free' message to be returned in CLI_ST_PRINT_FREE state */
void *p0, *p1; /* general purpose pointers and integers for registered commands, initialized */
int i0, i1; /* to 0 by the CLI before first invocation of the keyword parser. */
struct list l0; /* General purpose list element, pointers, offsets and integers for... */
void *p0, *p1; /* ...registered commands, initialized to 0 by the CLI before first... */
size_t o0, o1; /* ...invocation of the keyword parser, except for the list element which... */
int i0, i1; /* ...is initialized with LIST_INIT(). */
} cli; /* context used by the CLI */
struct {
struct cache_entry *entry; /* Entry to be sent from cache. */

View File

@ -498,6 +498,7 @@ static int cli_parse_request(struct appctx *appctx)
appctx->st2 = 0;
memset(&appctx->ctx.cli, 0, sizeof(appctx->ctx.cli));
LIST_INIT(&appctx->ctx.cli.l0);
p = appctx->chunk->area;
end = p + appctx->chunk->data;