-
- *len = 0;
- if (current_chunk >= mmd->chunks_total)
- return NULL;
- *len = chunk_table[current_chunk + 1] - chunk_table[current_chunk];
- if (!*len) /* nothing to send for this run */
- return inbuf;
- pos = chunk_table[current_chunk];
- if (inbuf_size < *len) {
- PARA_INFO_LOG("increasing inbuf for chunk #%lu/%lu to %zd bytes\n",
- current_chunk, mmd->chunks_total, *len);
- inbuf = para_realloc(inbuf, *len);
- inbuf_size = *len;
+ int ret;
+ long unsigned cc = mmd->current_chunk;
+
+ if (cc >= mmd->afi.chunks_total) /* eof */
+ return 0;
+ len = mmd->afi.chunk_table[cc + 1] - mmd->afi.chunk_table[cc];
+ if (!len) /* nothing to send for this run */
+ return -E_EMPTY_CHUNK;
+ pos = mmd->afi.chunk_table[cc];
+ if (inbuf_size < len) {
+ PARA_INFO_LOG("increasing inbuf for chunk #%lu/%lu to %zu bytes\n",
+ cc, mmd->afi.chunks_total, len);
+ inbuf = para_realloc(inbuf, len);
+ inbuf_size = len;