http/range: fix memory leak on out of order ranges

pull/6409/head
Victor Julien 4 years ago committed by Philippe Antoine
parent e82416a415
commit fc5632664c

@ -409,9 +409,8 @@ File *ContainerUrlRangeClose(HttpRangeContainerBlock *c, uint16_t flags)
File *f = c->container->files->tail;
// have we reached a saved range ?
HttpRangeContainerBuffer *range;
RB_FOREACH(range, HTTP_RANGES, &c->container->fragment_tree)
{
HttpRangeContainerBuffer *range, *safe = NULL;
RB_FOREACH_SAFE (range, HTTP_RANGES, &c->container->fragment_tree, safe) {
if (f->size < range->start) {
break;
}
@ -437,7 +436,10 @@ File *ContainerUrlRangeClose(HttpRangeContainerBlock *c, uint16_t flags)
}
}
// anyways, remove this range from the linked list, as we are now beyond it
RB_REMOVE(HTTP_RANGES, &c->container->fragment_tree, range);
HTTP_RANGES_RB_REMOVE(&c->container->fragment_tree, range);
(void)SC_ATOMIC_SUB(ContainerUrlRangeList.ht->memuse, range->buflen);
SCFree(range->buffer);
SCFree(range);
}
if (f->size >= c->container->totalsize) {

Loading…
Cancel
Save