Fix: Missing -ENODATA handling in the consumer
authorDavid Goulet <dgoulet@efficios.com>
Tue, 16 Oct 2012 18:50:46 +0000 (14:50 -0400)
committerDavid Goulet <dgoulet@efficios.com>
Tue, 16 Oct 2012 18:50:46 +0000 (14:50 -0400)
Fixes #379

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

index 8b43257bd134987a3d0811320276010b724579b3..27c870f3ad83fdd546b821f2758c1041d7e8fa95 100644 (file)
@@ -1912,7 +1912,7 @@ restart:
 
                                len = ctx->on_buffer_ready(stream, ctx);
                                /* It's ok to have an unavailable sub-buffer */
 
                                len = ctx->on_buffer_ready(stream, ctx);
                                /* It's ok to have an unavailable sub-buffer */
-                               if (len < 0 && len != -EAGAIN) {
+                               if (len < 0 && len != -EAGAIN && len != -ENODATA) {
                                        rcu_read_unlock();
                                        goto end;
                                } else if (len > 0) {
                                        rcu_read_unlock();
                                        goto end;
                                } else if (len > 0) {
@@ -2062,7 +2062,7 @@ void *lttng_consumer_thread_poll_fds(void *data)
                                high_prio = 1;
                                len = ctx->on_buffer_ready(local_stream[i], ctx);
                                /* it's ok to have an unavailable sub-buffer */
                                high_prio = 1;
                                len = ctx->on_buffer_ready(local_stream[i], ctx);
                                /* it's ok to have an unavailable sub-buffer */
-                               if (len < 0 && len != -EAGAIN) {
+                               if (len < 0 && len != -EAGAIN && len != -ENODATA) {
                                        goto end;
                                } else if (len > 0) {
                                        local_stream[i]->data_read = 1;
                                        goto end;
                                } else if (len > 0) {
                                        local_stream[i]->data_read = 1;
@@ -2085,7 +2085,7 @@ void *lttng_consumer_thread_poll_fds(void *data)
                                DBG("Normal read on fd %d", pollfd[i].fd);
                                len = ctx->on_buffer_ready(local_stream[i], ctx);
                                /* it's ok to have an unavailable sub-buffer */
                                DBG("Normal read on fd %d", pollfd[i].fd);
                                len = ctx->on_buffer_ready(local_stream[i], ctx);
                                /* it's ok to have an unavailable sub-buffer */
-                               if (len < 0 && len != -EAGAIN) {
+                               if (len < 0 && len != -EAGAIN && len != -ENODATA) {
                                        goto end;
                                } else if (len > 0) {
                                        local_stream[i]->data_read = 1;
                                        goto end;
                                } else if (len > 0) {
                                        local_stream[i]->data_read = 1;
This page took 0.026862 seconds and 4 git commands to generate.