From: Tobias Brunner Date: Thu, 26 Jan 2023 10:17:30 +0000 (+0100) Subject: swanctl: Terminate --monitor-sa command if daemon closes connection X-Git-Tag: 5.9.10rc1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4784c92c557f9a87a649aacfba758ab3a29a5b17;p=thirdparty%2Fstrongswan.git swanctl: Terminate --monitor-sa command if daemon closes connection --- diff --git a/src/swanctl/commands/list_sas.c b/src/swanctl/commands/list_sas.c index 8102eb10a8..6989533abd 100755 --- a/src/swanctl/commands/list_sas.c +++ b/src/swanctl/commands/list_sas.c @@ -452,10 +452,19 @@ static int list_sas(vici_conn_t *conn) return 0; } +CALLBACK(close_cb, void, + int *ret) +{ + fprintf(stderr, "connection closed\n"); + *ret = ECONNRESET; + kill(0, SIGTERM); +} + static int monitor_sas(vici_conn_t *conn) { command_format_options_t format = COMMAND_FORMAT_NONE; char *arg; + int ret = 0; while (TRUE) { @@ -476,6 +485,9 @@ static int monitor_sas(vici_conn_t *conn) } break; } + + vici_on_close(conn, close_cb, &ret); + if (vici_register(conn, "ike-updown", list_cb, &format) != 0) { fprintf(stderr, "registering for IKE_SAs failed: %s\n", @@ -491,9 +503,11 @@ static int monitor_sas(vici_conn_t *conn) wait_sigint(); - fprintf(stderr, "disconnecting...\n"); - - return 0; + if (!ret) + { + fprintf(stderr, "disconnecting...\n"); + } + return ret; } /**