diff options
author | Lutz Helwing <lutz_helwing@mentor.com> | 2017-08-22 14:12:17 +0200 |
---|---|---|
committer | Christoph Lipka <clipka@users.noreply.github.com> | 2017-08-22 14:12:17 +0200 |
commit | cf30c443064d28bfcdaa0f4c7bf799fd5d6fed99 (patch) | |
tree | f421f0b5aa7e1c022c8b73bd879e57e92e4c09d8 /src/daemon | |
parent | 1b8c74ace00fb0a0e38fae5fd2c3cb0bc7b89ccc (diff) | |
download | DLT-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>
Diffstat (limited to 'src/daemon')
-rw-r--r-- | src/daemon/dlt-daemon.c | 6 | ||||
-rw-r--r-- | src/daemon/dlt_daemon_common.c | 25 |
2 files changed, 21 insertions, 10 deletions
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; } } |