From: Igor Sysoev Date: Wed, 24 Sep 2003 16:44:13 +0000 (+0000) Subject: nginx-0.0.1-2003-09-24-20:44:13 import X-Git-Tag: release-0.1.0~318 X-Git-Url: http://git.kaiwu.me/%7Bsubstring-before(@doc,%20'.xml')%7D.html?a=commitdiff_plain;h=cf7e26ba460d22ed1c0934f8e35292f420f1afd9;p=nginx.git nginx-0.0.1-2003-09-24-20:44:13 import --- diff --git a/src/core/ngx_hunk.c b/src/core/ngx_hunk.c index 32a52c928..29b88772a 100644 --- a/src/core/ngx_hunk.c +++ b/src/core/ngx_hunk.c @@ -97,3 +97,43 @@ ngx_hunk_t *ngx_create_hunk_after(ngx_pool_t *pool, ngx_hunk_t *hunk, int size) return h; } + + +void ngx_chain_update_chains(ngx_chain_t **free, ngx_chain_t **busy, + ngx_chain_t **out) +{ + ngx_chain_t *te; + + if (*busy == NULL) { + *busy = *out; + + } else { + for (te = *busy; /* void */ ; te = te->next) { + if (te->next == NULL) { + te->next = *out; + break; + } + } + } + + *out = NULL; + + while (*busy) { + if ((*busy)->hunk->pos != (*busy)->hunk->last) { + break; + } + +#if (HAVE_WRITE_ZEROCOPY) + if ((*busy)->hunk->type & NGX_HUNK_ZEROCOPY_BUSY) { + break; + } +#endif + + (*busy)->hunk->pos = (*busy)->hunk->last = (*busy)->hunk->start; + + te = *busy; + *busy = (*busy)->next; + te->next = *free; + *free = te; + } +}