summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaya Sugiura <ssugiura@jp.adit-jv.com>2018-12-13 11:52:54 +0900
committerChristoph Lipka <clipka@users.noreply.github.com>2018-12-21 10:16:46 +0100
commitc42a2bd8030113be0275ed07e1bc48779f607eec (patch)
tree69b451be8e9adf57b918c57626eeea4538db3bda
parente3c2501313d98ff9f4519116e6d2f36314e0240e (diff)
downloadDLT-daemon-c42a2bd8030113be0275ed07e1bc48779f607eec.tar.gz
daemon: Add exit trigger
Signed-off-by: ManikandanC <Manikandan.Chockalingam@in.bosch.com> Signed-off-by: Saya Sugiura <ssugiura@jp.adit-jv.com>
-rw-r--r--src/daemon/dlt-daemon.c31
-rw-r--r--src/daemon/dlt-daemon.h1
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);