From 57e326b4119863f737d8677adc69dc53c7e4ed27 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Thu, 14 Nov 2019 16:39:48 +0300 Subject: Introduced chained buffer completion handlers. --- src/nxt_event_engine.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/nxt_event_engine.c') diff --git a/src/nxt_event_engine.c b/src/nxt_event_engine.c index c46158b7..6f051067 100644 --- a/src/nxt_event_engine.c +++ b/src/nxt_event_engine.c @@ -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); } -- cgit