logger: always reply to pipe requests 42/166342/3
authorMichal Bloch <m.bloch@samsung.com>
Fri, 12 Jan 2018 15:49:19 +0000 (16:49 +0100)
committerMichal Bloch <m.bloch@samsung.com>
Wed, 17 Jan 2018 17:21:48 +0000 (18:21 +0100)
Even on failure

Change-Id: Ifc69fc0161fa236fbc27eb5e823969d1d2edf0bf
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
src/logger/logger.c

index a8ef62e..dd94fa0 100755 (executable)
@@ -999,6 +999,9 @@ static void writer_close_fd(struct logger* server, struct writer* wr)
  */
 static void reader_free(struct reader* reader)
 {
+       if (!reader)
+               return;
+
        if (reader->fd_entity.fd >= 0)
                close(reader->fd_entity.fd);
        if (reader->read_fd >= 0)
@@ -1192,8 +1195,10 @@ static int parse_command_line(const char *cmdl, struct writer *wr, struct logger
        snprintf(cmdline, sizeof(cmdline), "%s", cmdl);
 
        reader = (struct reader *)calloc(1, sizeof(struct reader));
-       if (!reader)
-               return -ENOMEM;
+       if (!reader) {
+               retval = -ENOMEM;
+               goto cleanup;
+       }
 
        tok = strtok_r(cmdline, DELIMITER, &tok_sv);
        if (!tok || strcmp(tok, "dlogutil")) {
@@ -1311,6 +1316,8 @@ cleanup:
        optopt = 0;
 
        if (retval) {
+               if (wr)
+                       send_dlog_reply(wr->fd_entity.fd, DLOG_REQ_HANDLE_LOGUTIL, DLOG_REQ_RESULT_ERR, NULL, 0);
                *rd = NULL;
                reader_free(reader);
        } else