From c42a2bd8030113be0275ed07e1bc48779f607eec Mon Sep 17 00:00:00 2001 From: Saya Sugiura Date: Thu, 13 Dec 2018 11:52:54 +0900 Subject: daemon: Add exit trigger Signed-off-by: ManikandanC Signed-off-by: Saya Sugiura --- src/daemon/dlt-daemon.c | 31 ++++++++++++++++++------------- src/daemon/dlt-daemon.h | 1 + 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/daemon/dlt-daemon.c b/src/daemon/dlt-daemon.c index 9e99c74..5c65613 100644 --- a/src/daemon/dlt-daemon.c +++ b/src/daemon/dlt-daemon.c @@ -1360,6 +1360,20 @@ void dlt_daemon_local_cleanup(DltDaemon *daemon, DltDaemonLocal *daemon_local, i } +void dlt_daemon_exit_trigger() +{ + char tmp[PATH_MAX + 1] = {0}; + + snprintf(tmp, PATH_MAX, "%s/dlt", dltFifoBaseDir); + (void)unlink(tmp); + + snprintf(tmp, PATH_MAX, "%s/%s", dltFifoBaseDir, DLT_DAEMON_LOCK_FILE); + (void)unlink(tmp); + + /* stop event loop */ + g_exit = -1; +} + void dlt_daemon_signal_handler(int sig) { g_signo = sig; @@ -1370,19 +1384,10 @@ void dlt_daemon_signal_handler(int sig) case SIGINT: case SIGQUIT: { - /* Try to delete existing pipe, ignore result of unlink() */ - char tmp[PATH_MAX + 1]; - snprintf(tmp, PATH_MAX, "%s/dlt", dltFifoBaseDir); - tmp[PATH_MAX] = 0; - unlink(tmp); - - /* Try to delete lock file, ignore result of unlink() */ - snprintf(tmp, PATH_MAX, "%s/%s", dltFifoBaseDir, DLT_DAEMON_LOCK_FILE); - tmp[PATH_MAX] = 0; - unlink(tmp); - - /* stop event loop */ - g_exit = -1; + /* finalize the server */ + dlt_vlog(LOG_NOTICE, "Exiting DLT daemon due to signal: %s\n", + strsignal(sig)); + dlt_daemon_exit_trigger(); break; } default: diff --git a/src/daemon/dlt-daemon.h b/src/daemon/dlt-daemon.h index 80b0760..3370680 100644 --- a/src/daemon/dlt-daemon.h +++ b/src/daemon/dlt-daemon.h @@ -185,6 +185,7 @@ int dlt_daemon_local_connection_init(DltDaemon *daemon, DltDaemonLocal *daemon_l int dlt_daemon_local_ecu_version_init(DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose); void dlt_daemon_daemonize(int verbose); +void dlt_daemon_exit_trigger(); void dlt_daemon_signal_handler(int sig); int dlt_daemon_process_client_connect(DltDaemon *daemon, DltDaemonLocal *daemon_local, DltReceiver *recv, int verbose); int dlt_daemon_process_client_messages(DltDaemon *daemon, DltDaemonLocal *daemon_local, DltReceiver *revc, int verbose); -- cgit v1.2.1