server: Make "exit" command behave consistently

Before this fix, the "exit" command behaved differently
depending on where it was called from:

- "exit" in a telnet session: Session disconnected.
- "exit" in a Tcl session: Empty response sent but the
  session remained connected.
- "exit" in a script (outside of Telnet or Tcl): OpenOCD
  exited with code 0. Based on the help and documentation
  "exit" was apparently not intended for these cases.
  What's more, if "exit" is allowed in Tcl scripts,
  user may confuse it with the Tcl's native "exit"
  command that is not available in OpenOCD (it is
  shadowed with this OpenOCD's "exit" command).

This fix makes the behavior of "exit" consistent:

- "exit" in a telnet session: Session disconnected
  (no change).
- "exit" in a Tcl session: Session disconnected
  (same as for telnet).
- "exit" in a script: Notify the user that "exit"
  is deprecated outside of telnet/tcl but
  still shut down OpenOCD (to preserve the original
  behavior).

Update the documentation to make it very clear to users
when to use "exit" vs. "shutdown".

Change-Id: I790495330e1fa705b34097a1347fdc57aaa86de1
Signed-off-by: Jan Matyas <jan.matyas@codasip.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/9380
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
This commit is contained in:
Jan Matyas
2026-01-05 07:20:37 +01:00
committed by Antonio Borneo
parent 5b3db97c42
commit 0c6fe74351
6 changed files with 61 additions and 17 deletions

View File

@@ -54,5 +54,6 @@ struct telnet_service {
int telnet_init(char *banner);
int telnet_register_commands(struct command_context *command_context);
void telnet_service_free(void);
bool telnet_is_from_telnet_session(struct command_context *cmd_ctx);
#endif /* OPENOCD_SERVER_TELNET_SERVER_H */