)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"04d413f2dd279216fc30c33b89109f2ea457e2ff","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Parshintsev Anatoly \u003canatoly.parshintsev@syntacore.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-05-23 10:39:26 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"server: track asynchronous and synchronous shutdown requests separately (NFC)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The intention of the change is to improve readability of the respected"},{"line_number":10,"context_line":"codebase, by separating state management for sync and async shutdown"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"01a826ca_e1535e20","line":7,"updated":"2025-08-17 13:18:38.000000000","message":"NFC? Typo for RFC?\nI think you can remove it","commit_id":"90eede97b6a0cd36b74198131bd6fdd601cd5457"}],"src/openocd.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0eeb2a2383bba5f4bf8cc99e195dbf0291a61d6e","unresolved":true,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"\t/* warning: here we return either a signal number of ERROR_OK / ERROR_FAIL"},{"line_number":317,"context_line":"\t * status. This works, because ERROR_OK is zero an ERROR_FAIL is negative */"},{"line_number":318,"context_line":"\tassert(ERROR_FAIL \u003c 0);"},{"line_number":319,"context_line":"\tif (last_signal !\u003d 0)"},{"line_number":320,"context_line":"\t\treturn last_signal;"},{"line_number":321,"context_line":"\tif (ret !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a17a7a71_a9dffb34","line":318,"updated":"2025-05-23 14:00:43.000000000","message":"You are right, it\u0027s ambiguous to return either an error code (\u003c\u003d0) or a signal (\u003e0).\nBut the `assert()` here just makes everything more confusing.\nLet\u0027s instead think about a clean-up.\nPlease change the prototype using:\n`int server_quit(int *signal);`\nor forget the error code (by the way `server_quit` never returns error) and let it always return `last_signal` or `0`, as you have already done. So below you just take the return value as `last_signal`.\n\nFor this function use:\n```\nstatic int openocd_thread(int argc, char *argv[],\n    struct command_context *cmd_ctx,\n    int *signal);\n```\n\nThen some extra clean-up applies while handling the returned value","commit_id":"90eede97b6a0cd36b74198131bd6fdd601cd5457"},{"author":{"_account_id":1002161,"name":"Anatoly P","email":"kupokupokupopo@gmail.com","username":"ecco_the_dolphin"},"change_message_id":"895bc0d5f4354a94e8b0f9e47282cab064db9d64","unresolved":true,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"\t/* warning: here we return either a signal number of ERROR_OK / ERROR_FAIL"},{"line_number":317,"context_line":"\t * status. This works, because ERROR_OK is zero an ERROR_FAIL is negative */"},{"line_number":318,"context_line":"\tassert(ERROR_FAIL \u003c 0);"},{"line_number":319,"context_line":"\tif (last_signal !\u003d 0)"},{"line_number":320,"context_line":"\t\treturn last_signal;"},{"line_number":321,"context_line":"\tif (ret !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"2c584113_e37e5f7c","line":318,"in_reply_to":"60700833_01a8518d","updated":"2025-08-26 11:24:44.000000000","message":"Sorry for the delay, since the prerequisite for this one (sig_atomic_t) is merged now, I\u0027ll address your comments in the nearest time.","commit_id":"90eede97b6a0cd36b74198131bd6fdd601cd5457"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"04d413f2dd279216fc30c33b89109f2ea457e2ff","unresolved":true,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"\t/* warning: here we return either a signal number of ERROR_OK / ERROR_FAIL"},{"line_number":317,"context_line":"\t * status. This works, because ERROR_OK is zero an ERROR_FAIL is negative */"},{"line_number":318,"context_line":"\tassert(ERROR_FAIL \u003c 0);"},{"line_number":319,"context_line":"\tif (last_signal !\u003d 0)"},{"line_number":320,"context_line":"\t\treturn last_signal;"},{"line_number":321,"context_line":"\tif (ret !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"60700833_01a8518d","line":318,"in_reply_to":"a17a7a71_a9dffb34","updated":"2025-08-17 13:18:38.000000000","message":"Returning to this patch.\nLet\u0027s avoid mixing in the return value the OpenOCD ERROR_codes with other values, both for `server_quit()` and for this function.\n\nProbably we cannot rely on the value of `last_signal` to know if it carry a real signal value as a signal value could be defined as negative or zero on some platform.\nI suggest to add a new\n```\nbool has_server_quit_with signal(int *signal)\n{\n    if (shutdown_openocd !\u003d SHUTDOWN_WITH_SIGNAL_CODE)\n        return false;\n    \n    *signal \u003d last_signal;\n    return true;\n}\n```\nand use it directly in `openocd_main()` below","commit_id":"90eede97b6a0cd36b74198131bd6fdd601cd5457"}],"src/server/server.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0eeb2a2383bba5f4bf8cc99e195dbf0291a61d6e","unresolved":true,"context_lines":[{"line_number":41,"context_line":" * asynchronous event such as signal or WM_QUIT in the message queue for"},{"line_number":42,"context_line":" * windows */"},{"line_number":43,"context_line":"static volatile sig_atomic_t async_shutdown_requested;"},{"line_number":44,"context_line":"/* store received signal to exit application by killing ourselves */"},{"line_number":45,"context_line":"static volatile sig_atomic_t last_signal;"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"bool sync_shutdown_requested;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4766321a_4c4371cc","line":44,"updated":"2025-05-23 14:00:43.000000000","message":"Add somehow that value zero means not signal received\nAnd maybe rename it as `async_shutdown_last_signal`","commit_id":"90eede97b6a0cd36b74198131bd6fdd601cd5457"}]}
