Introduced chained buffer completion handlers.

This commit is contained in:
Igor Sysoev
2019-11-14 16:39:48 +03:00
parent 643c433f8e
commit 57e326b411
9 changed files with 115 additions and 33 deletions

View File

@@ -721,7 +721,7 @@ void
nxt_event_engine_buf_mem_completion(nxt_task_t *task, void *obj, void *data)
{
nxt_event_engine_t *engine;
nxt_buf_t *b, *parent;
nxt_buf_t *b, *next, *parent;
b = obj;
parent = data;
@@ -729,9 +729,17 @@ nxt_event_engine_buf_mem_completion(nxt_task_t *task, void *obj, void *data)
nxt_debug(task, "buf completion: %p %p", b, b->mem.start);
engine = b->data;
nxt_event_engine_buf_mem_free(engine, b);
nxt_buf_parent_completion(task, parent);
do {
next = b->next;
parent = b->parent;
nxt_event_engine_buf_mem_free(engine, b);
nxt_buf_parent_completion(task, parent);
b = next;
} while (b != NULL);
}