X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afh_recv.c;h=6a0ec239bbcbd120efd130b5f8f24c2b136d4516;hp=9d6effe1e25f6cc40ad0ccf5386ee997bce94862;hb=f0b8296a0635e74aaa58767e513eed226504ec34;hpb=8d106ca317a2c42f35a86ba244f843688f6939e6 diff --git a/afh_recv.c b/afh_recv.c index 9d6effe1..6a0ec239 100644 --- a/afh_recv.c +++ b/afh_recv.c @@ -1,8 +1,4 @@ -/* - * Copyright (C) 2011 Andre Noll - * - * Licensed under the GPL v2. For licencing details see COPYING. - */ +/* Copyright (C) 2011 Andre Noll , see file COPYING. */ /** \file afh_recv.c Receiver for streaming local files. */ @@ -72,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; @@ -91,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) @@ -104,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) @@ -113,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); @@ -173,6 +174,7 @@ static int afh_recv_post_select(__a_unused struct sched *s, void *context) char *buf; const char *start; size_t size; + uint32_t len; struct timeval chunk_time; unsigned j_given = RECV_CMD_OPT_GIVEN(AFH, JUST_IN_TIME, lpr); unsigned H_given = RECV_CMD_OPT_GIVEN(AFH, NO_HEADER, lpr); @@ -196,12 +198,12 @@ static int afh_recv_post_select(__a_unused struct sched *s, void *context) long unsigned n; for (n = pard->first_chunk; n < pard->last_chunk; n++) { ret = afh_get_chunk(n, afhi, pard->audio_format_num, - pard->map, pard->map_size, &start, &size, + pard->map, pard->map_size, &start, &len, &pard->afh_context); if (ret < 0) goto out; - PARA_INFO_LOG("adding %zu bytes\n", size); - btr_add_output_dont_free(start, size, btrn); + PARA_DEBUG_LOG("adding %u bytes\n", len); + btr_add_output_dont_free(start, len, btrn); } ret = -E_RECV_EOF; goto out; @@ -217,12 +219,12 @@ static int afh_recv_post_select(__a_unused struct sched *s, void *context) } ret = afh_get_chunk(pard->current_chunk, afhi, pard->audio_format_num, pard->map, - pard->map_size, &start, &size, + pard->map_size, &start, &len, &pard->afh_context); if (ret < 0) goto out; PARA_DEBUG_LOG("adding chunk %u\n", pard->current_chunk); - btr_add_output_dont_free(start, size, btrn); + btr_add_output_dont_free(start, len, btrn); if (pard->current_chunk >= pard->last_chunk) { ret = -E_RECV_EOF; goto out; @@ -238,7 +240,6 @@ out: } const struct receiver lsg_recv_cmd_com_afh_user_data = { - .init = afh_init, .open = afh_recv_open, .close = afh_recv_close, .pre_select = afh_recv_pre_select,