From 5b95946946be336c684e1dc2d05bd7b06674eed1 Mon Sep 17 00:00:00 2001 From: Francis Deslauriers Date: Tue, 5 Nov 2019 14:25:15 -0500 Subject: [PATCH] Fix: src.ctf.lttng-live: checking `errno` value on all errors Issue ===== We check the errno value even in cases where the errno is not set by the function that witnessed the error. For example, we have a `goto error;` after the `lttng_live_get_one_metadata_packet() call. Solution ======== Move the errno check right after the functions that set it on error. Note ==== This erroneous change was introduced by this commit: commit c28512ab93b16501a8b0da494f0a03e5f0f22662 Author: Francis Deslauriers Date: Mon Oct 28 14:49:08 2019 -0400 src.ctf.lttng-live: make `lttng_live_get_one_metadata_packet()` return status Signed-off-by: Francis Deslauriers Change-Id: I7acb86984249658460888079fd7968d35f6d43fa Reviewed-on: https://review.lttng.org/c/babeltrace/+/2342 Tested-by: jenkins Reviewed-by: Simon Marchi --- src/plugins/ctf/lttng-live/metadata.c | 32 ++++++++++++++++----------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/plugins/ctf/lttng-live/metadata.c b/src/plugins/ctf/lttng-live/metadata.c index de8f3dc9..787fc0b3 100644 --- a/src/plugins/ctf/lttng-live/metadata.c +++ b/src/plugins/ctf/lttng-live/metadata.c @@ -154,9 +154,15 @@ enum lttng_live_iterator_status lttng_live_metadata_update( /* Open for writing */ fp = bt_open_memstream(&metadata_buf, &size); if (!fp) { - BT_COMP_LOGE_APPEND_CAUSE_ERRNO(self_comp, - "Metadata open_memstream", "."); - goto error; + if (errno == EINTR && + lttng_live_graph_is_canceled(session->lttng_live_msg_iter)) { + status = LTTNG_LIVE_ITERATOR_STATUS_AGAIN; + } else { + BT_COMP_LOGE_APPEND_CAUSE_ERRNO(self_comp, + "Metadata open_memstream", "."); + status = LTTNG_LIVE_ITERATOR_STATUS_ERROR; + } + goto end; } keep_receiving = true; @@ -222,9 +228,15 @@ enum lttng_live_iterator_status lttng_live_metadata_update( fp = bt_fmemopen(metadata_buf, len_read, "rb"); if (!fp) { - BT_COMP_LOGE_APPEND_CAUSE_ERRNO(self_comp, - "Cannot memory-open metadata buffer", "."); - goto error; + if (errno == EINTR && + lttng_live_graph_is_canceled(session->lttng_live_msg_iter)) { + status = LTTNG_LIVE_ITERATOR_STATUS_AGAIN; + } else { + BT_COMP_LOGE_APPEND_CAUSE_ERRNO(self_comp, + "Cannot memory-open metadata buffer", "."); + status = LTTNG_LIVE_ITERATOR_STATUS_ERROR; + } + goto end; } /* @@ -277,13 +289,7 @@ enum lttng_live_iterator_status lttng_live_metadata_update( goto end; error: - if (errno == EINTR) { - if (lttng_live_graph_is_canceled(session->lttng_live_msg_iter)) { - status = LTTNG_LIVE_ITERATOR_STATUS_AGAIN; - } - } else { - status = LTTNG_LIVE_ITERATOR_STATUS_ERROR; - } + status = LTTNG_LIVE_ITERATOR_STATUS_ERROR; end: if (fp) { int closeret; -- 2.34.1