summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLutz Helwing <lutz_helwing@mentor.com>2017-08-22 14:12:17 +0200
committerChristoph Lipka <clipka@users.noreply.github.com>2017-08-22 14:12:17 +0200
commitcf30c443064d28bfcdaa0f4c7bf799fd5d6fed99 (patch)
treef421f0b5aa7e1c022c8b73bd879e57e92e4c09d8
parent1b8c74ace00fb0a0e38fae5fd2c3cb0bc7b89ccc (diff)
downloadDLT-daemon-cf30c443064d28bfcdaa0f4c7bf799fd5d6fed99.tar.gz
Data stuck in receiver buffer when dlt_daemon_user_send_log_level() fails (#21)
- When dlt_daemon_user_send_log_level() called in dlt_daemon_process_user_message_register_context() fails -1 was returned which caused dlt_daemon_process_user_messages() to stop processing receiver buffer. Remaining data was stuck until new data arrived over FIFO. - Make debug output of dlt_daemon_user_send_log_level() more verbose. Signed-off-by: Lutz Helwing <lutz_helwing@mentor.com>
-rw-r--r--.gitignore4
-rw-r--r--src/daemon/dlt-daemon.c6
-rw-r--r--src/daemon/dlt_daemon_common.c25
3 files changed, 23 insertions, 12 deletions
diff --git a/.gitignore b/.gitignore
index 3e03b2d..4178bd7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,6 @@ config.h
include/dlt/dlt_version.h
.project
.cproject
-
-
.settings
+.idea/
+cmake-build-debug/
diff --git a/src/daemon/dlt-daemon.c b/src/daemon/dlt-daemon.c
index 9288d33..313935d 100644
--- a/src/daemon/dlt-daemon.c
+++ b/src/daemon/dlt-daemon.c
@@ -2423,14 +2423,10 @@ int dlt_daemon_process_user_message_register_context(DltDaemon *daemon,
/* This call also replaces the default values with the values defined for default */
if (dlt_daemon_user_send_log_level(daemon, context, verbose)==-1)
{
- snprintf(local_str,
- DLT_DAEMON_TEXTBUFSIZE,
- "Can't send current log level as response to %s for (%.4s;%.4s)\n",
+ dlt_vlog(LOG_WARNING, "Can't send current log level as response to %s for (%.4s;%.4s)\n",
__func__,
context->apid,
context->ctid);
- dlt_log(LOG_WARNING, local_str);
- return -1;
}
}
diff --git a/src/daemon/dlt_daemon_common.c b/src/daemon/dlt_daemon_common.c
index 988bd7b..096708c 100644
--- a/src/daemon/dlt_daemon_common.c
+++ b/src/daemon/dlt_daemon_common.c
@@ -1119,10 +1119,16 @@ int dlt_daemon_user_send_log_level(DltDaemon *daemon, DltDaemonContext *context,
PRINT_FUNCTION_VERBOSE(verbose);
if ((daemon == NULL) || (context == NULL))
+ {
+ dlt_vlog(LOG_ERR, "NULL parameter in %s", __func__);
return -1;
+ }
if (dlt_user_set_userheader(&userheader, DLT_USER_MESSAGE_LOG_LEVEL) < DLT_RETURN_OK)
+ {
+ dlt_vlog(LOG_ERR, "Failed to set userheader in %s", __func__);
return -1;
+ }
if(context->storage_log_level != DLT_LOG_DEFAULT)
{
@@ -1137,22 +1143,31 @@ int dlt_daemon_user_send_log_level(DltDaemon *daemon, DltDaemonContext *context,
usercontext.log_level_pos = context->log_level_pos;
- snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE, "Send log-level to context: %.4s:%.4s [%i -> %i] [%i -> %i]\n",
- context->apid, context->ctid, context->log_level, usercontext.log_level, context->trace_status, usercontext.trace_status);
- dlt_log(LOG_NOTICE, str);
+ dlt_vlog(LOG_NOTICE, "Send log-level to context: %.4s:%.4s [%i -> %i] [%i -> %i]\n",
+ context->apid,
+ context->ctid,
+ context->log_level,
+ usercontext.log_level,
+ context->trace_status,
+ usercontext.trace_status);
/* log to FIFO */
+ errno = 0;
ret = dlt_user_log_out2(context->user_handle,
&(userheader), sizeof(DltUserHeader),
&(usercontext), sizeof(DltUserControlMsgLogLevel));
if (ret < DLT_RETURN_OK)
{
- if (errno==EPIPE)
+ dlt_vlog(LOG_ERR, "Failed to send data to application in %s: %s",
+ __func__,
+ errno != 0 ? strerror(errno) : "Unknown error");
+
+ if (errno == EPIPE)
{
/* Close connection */
close(context->user_handle);
- context->user_handle=DLT_FD_INIT;
+ context->user_handle = DLT_FD_INIT;
}
}