static int udp_send_fec(char *buf, size_t len, void *private_data)
{
struct udp_target *ut = private_data;
- int ret = udp_init_session(ut);
+ int ret;
+ if (sender_status == SENDER_OFF)
+ return 0;
+ ret = udp_init_session(ut);
if (ret < 0)
goto fail;
ret = send_queued_chunks(ut->fd, ut->cq, 0);
if (!len)
return 0;
if (!ret) { /* still data left in the queue */
- ret = cq_enqueue(ut->cq, buf, len);
- if (ret < 0)
- goto fail;
+ ret = cq_force_enqueue(ut->cq, buf, len);
+ assert(ret >= 0);
}
ret = write_nonblock(ut->fd, buf, len, 0);
if (ret == -ERRNO_TO_PARA_ERROR(ECONNREFUSED))
if (ret < 0)
goto fail;
if (ret != len) {
- ret = cq_enqueue(ut->cq, buf + ret, len - ret);
- if (ret < 0)
- goto fail;
+ ret = cq_force_enqueue(ut->cq, buf + ret, len - ret);
+ assert(ret >= 0);
}
return 1;
fail: