From 8bd3409c900850298da3dd961daaf0dfc2b5bf44 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Wed, 10 Jan 2018 00:19:13 +0100 Subject: [PATCH] afh_recv: Improve error diagnostics. There are many reasons for afh_recv_open() to fail. For example, the afh receiver could be unable to open its input file, or the given begin chunk was larger than the end chunk. At the moment the error reporting is a bit scarce since only the string of the error code is printed. This commit makes afh_recv_open() print also the reason for the error and the name of the file that caused the error. --- afh_recv.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/afh_recv.c b/afh_recv.c index c3e6ddbd..6525209b 100644 --- a/afh_recv.c +++ b/afh_recv.c @@ -68,7 +68,7 @@ static int afh_recv_open(struct receiver_node *rn) struct lls_parse_result *lpr = rn->lpr; struct private_afh_recv_data *pard; struct afh_info *afhi; - const char *fn = RECV_CMD_OPT_STRING_VAL(AFH, FILENAME, lpr); + const char *fn = RECV_CMD_OPT_STRING_VAL(AFH, FILENAME, lpr), *msg; int32_t bc = RECV_CMD_OPT_INT32_VAL(AFH, BEGIN_CHUNK, lpr); const struct lls_opt_result *r_e = RECV_CMD_OPT_RESULT(AFH, END_CHUNK, lpr); int ret; @@ -87,8 +87,10 @@ static int afh_recv_open(struct receiver_node *rn) goto out_unmap; pard->audio_format_num = ret; ret = -ERRNO_TO_PARA_ERROR(EINVAL); + msg = "no data chunks"; if (afhi->chunks_total == 0) goto out_clear_afhi; + msg = "invalid begin chunk"; if (PARA_ABS(bc) >= afhi->chunks_total) goto out_clear_afhi; if (bc >= 0) @@ -100,6 +102,7 @@ static int afh_recv_open(struct receiver_node *rn) if (lls_opt_given(r_e)) { int32_t ec = lls_int32_val(0, r_e); ret = -ERRNO_TO_PARA_ERROR(EINVAL); + msg = "invalid end chunk"; if (PARA_ABS(ec) > afhi->chunks_total) goto out_clear_afhi; if (ec >= 0) @@ -109,12 +112,14 @@ static int afh_recv_open(struct receiver_node *rn) } else pard->last_chunk = afhi->chunks_total - 1; ret = -ERRNO_TO_PARA_ERROR(EINVAL); + msg = "begin chunk >= end chunk!?"; if (pard->first_chunk >= pard->last_chunk) goto out_clear_afhi; pard->current_chunk = pard->first_chunk; return pard->audio_format_num; out_clear_afhi: clear_afhi(afhi); + PARA_ERROR_LOG("%s: %s\n", fn, msg); out_unmap: para_munmap(pard->map, pard->map_size); close(pard->fd); -- 2.39.2