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

@@ -9529,7 +9529,12 @@ port is 6666.
@section Server Commands
@deffn {Command} {exit}
Exits the current telnet session.
Exits the current telnet or Tcl session but the OpenOCD process remains running.
This command should only be used in telnet or Tcl sessions (and not directly
in Tcl scripts).
Note: To terminate the whole OpenOCD process, use the
@command{shutdown} command instead.
@end deffn
@deffn {Command} {help} [string]