]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MINOR: server: define CLI I/O handler for "add server"
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 22 May 2025 15:07:59 +0000 (17:07 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 22 May 2025 15:40:05 +0000 (17:40 +0200)
commit2570892c41e0acd71a82278ff01e145376aed90b
tree9a892a7bef64e508456cd5f0cd0a8adc3210c71c
parent1c0f2e62ad784e09f3c878ab3584f77e0f297760
MINOR: server: define CLI I/O handler for "add server"

Extend "add server" to support an IO handler function named
cli_io_handler_add_server(). A context object is also defined whose
usage will depend on IO handler capabilities.

IO handler is skipped when "add server" is run in default mode, i.e. on
a dynamic server creation. Thus, currently IO handler is unneeded.
However, it will become useful to support sub-commands for "add server".

Note that return value of "add server" parser has been changed on server
creation success. Previously, it was used incorrectly to report if
server was inserted or not. In fact, parser return value is used by CLI
generic code to detect if command processing has been completed, or
should continue to the IO handler. Now, "add server" always returns 1 to
signal that CLI processing is completed. This is necessary to preserve
CLI output emitted by parser, even now that IO handler is defined for
the command. Previously, output was emitted in every situations due to
IO handler not defined. See below code snippet from cli.c for a better
overview :

  if (kw->parse && kw->parse(args, payload, appctx, kw->private) != 0) {
          ret = 1;
          goto fail;
  }

  /* kw->parse could set its own io_handler or io_release handler */
  if (!appctx->cli_ctx.io_handler) {
          ret = 1;
          goto fail;
  }

  appctx->st0 = CLI_ST_CALLBACK;
  ret = 1;
  goto end;
src/server.c