We missed to update the number of pending bytes when removing
a chunk from the queue.
This patch also clarifies the description of the cq parameter of
cq_dequeue().
Thanks to Gerrit Renker who pointed out this bug.
/**
* Remove the current chunk from the queue.
*
- * \param cq The chunk to remove.
+ * \param cq The queue to remove from.
*/
void cq_dequeue(struct chunk_queue *cq)
{
struct queued_chunk *qc = cq_peek(cq);
assert(qc);
+ assert(cq->num_pending >= qc->num_bytes);
+ cq->num_pending -= qc->num_bytes;
list_del(&qc->node);
free(qc);
}