From 341831da4da448392d62e48f1a4f419a18e3dca5 Mon Sep 17 00:00:00 2001 From: Bui Nguyen Quoc Thanh Date: Wed, 13 Mar 2019 15:41:44 +0700 Subject: daemon: Don't remove unregistered context If a context is defined and loaded from runtime context config file, that context won't be deleted/removed from dlt-daemon database until its parent application is unregistered. Signed-off-by: Bui Nguyen Quoc Thanh --- src/daemon/dlt-daemon.c | 6 +++++- src/daemon/dlt_daemon_common.c | 8 ++++++++ src/daemon/dlt_daemon_common.h | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/daemon/dlt-daemon.c b/src/daemon/dlt-daemon.c index b587ead..b4c82b0 100644 --- a/src/daemon/dlt-daemon.c +++ b/src/daemon/dlt-daemon.c @@ -2597,7 +2597,11 @@ int dlt_daemon_process_user_message_unregister_context(DltDaemon *daemon, daemon->ecuid, verbose); - if (context) { + /* In case the daemon is loaded with predefined contexts and its context + * unregisters, the context information will not be deleted from daemon's + * table until its parent application is unregistered. + */ + if (context && context->predefined == false) { /* Delete this connection entry from internal table*/ if (dlt_daemon_context_del(daemon, context, daemon->ecuid, verbose) == -1) { dlt_vlog(LOG_WARNING, diff --git a/src/daemon/dlt_daemon_common.c b/src/daemon/dlt_daemon_common.c index 8508dfe..38b94fe 100644 --- a/src/daemon/dlt_daemon_common.c +++ b/src/daemon/dlt_daemon_common.c @@ -912,6 +912,14 @@ DltDaemonContext *dlt_daemon_context_add(DltDaemon *daemon, context->log_level_pos = log_level_pos; context->user_handle = user_handle; + /* In case a context is loaded from runtime config file, + * the user_handle is 0 and we mark that context as predefined. + */ + if (context->user_handle == 0) + context->predefined = true; + else + context->predefined = false; + /* Sort */ if (new_context) { qsort(user_list->contexts, diff --git a/src/daemon/dlt_daemon_common.h b/src/daemon/dlt_daemon_common.h index be29bca..507098a 100644 --- a/src/daemon/dlt_daemon_common.h +++ b/src/daemon/dlt_daemon_common.h @@ -79,6 +79,7 @@ # include # include +# include # include "dlt_common.h" # include "dlt_user.h" # include "dlt_offline_logstorage.h" @@ -142,6 +143,7 @@ typedef struct int user_handle; /**< connection handle for connection to user application */ char *context_description; /**< context description */ int8_t storage_log_level; /**< log level set for offline logstorage */ + bool predefined; /**< set to true if this context is predefined by runtime configuration file */ } DltDaemonContext; /* -- cgit v1.2.1