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.
struct lls_parse_result *lpr = rn->lpr;
struct private_afh_recv_data *pard;
struct afh_info *afhi;
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;
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;
goto out_unmap;
pard->audio_format_num = ret;
ret = -ERRNO_TO_PARA_ERROR(EINVAL);
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;
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)
if (PARA_ABS(bc) >= afhi->chunks_total)
goto out_clear_afhi;
if (bc >= 0)
if (lls_opt_given(r_e)) {
int32_t ec = lls_int32_val(0, r_e);
ret = -ERRNO_TO_PARA_ERROR(EINVAL);
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)
if (PARA_ABS(ec) > afhi->chunks_total)
goto out_clear_afhi;
if (ec >= 0)
} else
pard->last_chunk = afhi->chunks_total - 1;
ret = -ERRNO_TO_PARA_ERROR(EINVAL);
} 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);
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);
out_unmap:
para_munmap(pard->map, pard->map_size);
close(pard->fd);