Fix: don't print EPIPE error which can happen
authorDavid Goulet <dgoulet@efficios.com>
Wed, 19 Dec 2012 22:54:25 +0000 (17:54 -0500)
committerDavid Goulet <dgoulet@efficios.com>
Wed, 19 Dec 2012 22:54:27 +0000 (17:54 -0500)
Anytime a relayd is killed, writing on a closed fd is totally possible
so the PERROR of an EPIPE error is useless as an error but we do print
it as a dbg message now.

Signed-off-by: David Goulet <dgoulet@efficios.com>
src/common/consumer.c

index 61d6f2e79b702337e3e8095da5132136714616b5..e0a756a5697c40c7cbbd1ff0887a5c01f61464e3 100644 (file)
@@ -1325,7 +1325,15 @@ static int write_relayd_metadata_id(int fd,
                ret = write(fd, (void *) &hdr, sizeof(hdr));
        } while (ret < 0 && errno == EINTR);
        if (ret < 0) {
                ret = write(fd, (void *) &hdr, sizeof(hdr));
        } while (ret < 0 && errno == EINTR);
        if (ret < 0) {
-               PERROR("write metadata stream id");
+               /*
+                * This error means that the fd's end is closed so ignore the perror
+                * not to clubber the error output since this can happen in a normal
+                * code path.
+                */
+               if (errno != EPIPE) {
+                       PERROR("write metadata stream id");
+               }
+               DBG3("Consumer failed to write relayd metadata id (errno: %d)", errno);
                goto end;
        }
        DBG("Metadata stream id %" PRIu64 " with padding %lu written before data",
                goto end;
        }
        DBG("Metadata stream id %" PRIu64 " with padding %lu written before data",
This page took 0.027196 seconds and 4 git commands to generate.