Tcl exception codes cleanup, shutdown command amendments
[fw/openocd] / src / openocd.c
index b0dd21ab2c82bd7a72e038d7801b37bf97eeff42..4d4dc2c83d1a9dd4156dc5b80cc7063192d1dc01 100644 (file)
@@ -283,7 +283,9 @@ static int openocd_thread(int argc, char *argv[], struct command_context *cmd_ct
                return ERROR_FAIL;
 
        ret = parse_config_file(cmd_ctx);
-       if (ret != ERROR_OK)
+       if (ret == ERROR_COMMAND_CLOSE_CONNECTION)
+               return ERROR_OK;
+       else if (ret != ERROR_OK)
                return ERROR_FAIL;
 
        ret = server_init(cmd_ctx);
@@ -296,9 +298,15 @@ static int openocd_thread(int argc, char *argv[], struct command_context *cmd_ct
                        return ERROR_FAIL;
        }
 
-       server_loop(cmd_ctx);
+       ret = server_loop(cmd_ctx);
+
+       int last_signal = server_quit();
+       if (last_signal != ERROR_OK)
+               return last_signal;
 
-       return server_quit();
+       if (ret != ERROR_OK)
+               return ERROR_FAIL;
+       return ERROR_OK;
 }
 
 /* normally this is the main() function entry, but if OpenOCD is linked