Fix: handle consumer data pipe read error
authorDavid Goulet <dgoulet@efficios.com>
Tue, 18 Dec 2012 20:21:33 +0000 (15:21 -0500)
committerDavid Goulet <dgoulet@efficios.com>
Tue, 18 Dec 2012 20:21:33 +0000 (15:21 -0500)
Signed-off-by: David Goulet <dgoulet@efficios.com>
src/common/consumer.c

index c74d1f7ae3cbded46415430ca20054c8686de416..1af69ef93015c7e397c8028781dc3c97895c1790 100644 (file)
@@ -2364,6 +2364,11 @@ void *consumer_thread_data_poll(void *data)
                                pipe_readlen = read(ctx->consumer_data_pipe[0], &new_stream,
                                                sizeof(new_stream));
                        } while (pipe_readlen == -1 && errno == EINTR);
                                pipe_readlen = read(ctx->consumer_data_pipe[0], &new_stream,
                                                sizeof(new_stream));
                        } while (pipe_readlen == -1 && errno == EINTR);
+                       if (pipe_readlen < 0) {
+                               PERROR("read consumer data pipe");
+                               /* Continue so we can at least handle the current stream(s). */
+                               continue;
+                       }
 
                        /*
                         * If the stream is NULL, just ignore it. It's also possible that
 
                        /*
                         * If the stream is NULL, just ignore it. It's also possible that
This page took 0.026358 seconds and 4 git commands to generate.