fc->group.num_chunks = i - fc->group.first_chunk;
fc->slice.num = 0;
fc->slice.bytes = ROUND_UP(fc->group.bytes, k) / k;
+ /* FIXME: Avoid division by zero in a better way */
+ if (!fc->slice.bytes)
+ return 0;
/* The last slice will not be fully used */
last_payload_size = fc->group.bytes % fc->slice.bytes;
*/
size_t vss_get_fec_eof_packet(const char **buf)
{
- static const char fec_eof_packet[FEC_HEADER_SIZE] =
- "\xec\x0d\xcc\xfe\0\0\0\0"
- "\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0";
+ static const char fec_eof_packet[FEC_HEADER_SIZE] = FEC_EOF_PACKET;
*buf = fec_eof_packet;
return FEC_HEADER_SIZE;
}
continue;
if (!compute_next_fec_slice(fc, vsst))
continue;
- PARA_DEBUG_LOG("sending %d:%d (%zu bytes)\n", fc->group.num,
+ PARA_DEBUG_LOG("sending %d:%d (%u bytes)\n", fc->group.num,
fc->slice.num, fc->slice.bytes);
fc->fcp->send((char *)fc->enc_buf,
fc->slice.bytes + FEC_HEADER_SIZE,
vsst->task.post_select = vss_post_select;
ms2tv(announce_time, &vsst->announce_tv);
PARA_INFO_LOG("announce timeval: %lums\n", tv2ms(&vsst->announce_tv));
+ INIT_LIST_HEAD(&fec_client_list);
for (i = 0; senders[i].name; i++) {
PARA_NOTICE_LOG("initializing %s sender\n", senders[i].name);
senders[i].init(&senders[i]);
tv_add(&vsst->autoplay_barrier, &vsst->announce_tv,
&vsst->data_send_barrier);
}
- INIT_LIST_HEAD(&fec_client_list);
register_task(&vsst->task);
}