changeset 5285:d47ef93134e5

Sub filter: switched to ngx_chain_get_free_buf(). No functional changes.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 25 Jul 2013 14:54:45 +0400
parents eaa9c732a1b9
children 819c5b53d8b5
files src/http/modules/ngx_http_sub_filter_module.c
diffstat 1 files changed, 22 insertions(+), 61 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/modules/ngx_http_sub_filter_module.c
+++ b/src/http/modules/ngx_http_sub_filter_module.c
@@ -268,25 +268,14 @@ ngx_http_sub_body_filter(ngx_http_reques
 
                 if (ctx->saved.len) {
 
-                    if (ctx->free) {
-                        cl = ctx->free;
-                        ctx->free = ctx->free->next;
-                        b = cl->buf;
-                        ngx_memzero(b, sizeof(ngx_buf_t));
+                    cl = ngx_chain_get_free_buf(r->pool, &ctx->free);
+                    if (cl == NULL) {
+                        return NGX_ERROR;
+                    }
 
-                    } else {
-                        b = ngx_calloc_buf(r->pool);
-                        if (b == NULL) {
-                            return NGX_ERROR;
-                        }
+                    b = cl->buf;
 
-                        cl = ngx_alloc_chain_link(r->pool);
-                        if (cl == NULL) {
-                            return NGX_ERROR;
-                        }
-
-                        cl->buf = b;
-                    }
+                    ngx_memzero(b, sizeof(ngx_buf_t));
 
                     b->pos = ngx_pnalloc(r->pool, ctx->saved.len);
                     if (b->pos == NULL) {
@@ -303,24 +292,12 @@ ngx_http_sub_body_filter(ngx_http_reques
                     ctx->saved.len = 0;
                 }
 
-                if (ctx->free) {
-                    cl = ctx->free;
-                    ctx->free = ctx->free->next;
-                    b = cl->buf;
+                cl = ngx_chain_get_free_buf(r->pool, &ctx->free);
+                if (cl == NULL) {
+                    return NGX_ERROR;
+                }
 
-                } else {
-                    b = ngx_alloc_buf(r->pool);
-                    if (b == NULL) {
-                        return NGX_ERROR;
-                    }
-
-                    cl = ngx_alloc_chain_link(r->pool);
-                    if (cl == NULL) {
-                        return NGX_ERROR;
-                    }
-
-                    cl->buf = b;
-                }
+                b = cl->buf;
 
                 ngx_memcpy(b, ctx->buf, sizeof(ngx_buf_t));
 
@@ -335,7 +312,6 @@ ngx_http_sub_body_filter(ngx_http_reques
                     b->file_pos += b->pos - ctx->buf->pos;
                 }
 
-                cl->next = NULL;
                 *ctx->last_out = cl;
                 ctx->last_out = &cl->next;
             }
@@ -356,15 +332,14 @@ ngx_http_sub_body_filter(ngx_http_reques
 
             /* rc == NGX_OK */
 
-            b = ngx_calloc_buf(r->pool);
-            if (b == NULL) {
+            cl = ngx_chain_get_free_buf(r->pool, &ctx->free);
+            if (cl == NULL) {
                 return NGX_ERROR;
             }
 
-            cl = ngx_alloc_chain_link(r->pool);
-            if (cl == NULL) {
-                return NGX_ERROR;
-            }
+            b = cl->buf;
+
+            ngx_memzero(b, sizeof(ngx_buf_t));
 
             slcf = ngx_http_get_module_loc_conf(r, ngx_http_sub_filter_module);
 
@@ -386,8 +361,6 @@ ngx_http_sub_body_filter(ngx_http_reques
                 b->sync = 1;
             }
 
-            cl->buf = b;
-            cl->next = NULL;
             *ctx->last_out = cl;
             ctx->last_out = &cl->next;
 
@@ -398,29 +371,17 @@ ngx_http_sub_body_filter(ngx_http_reques
 
         if (ctx->buf->last_buf || ngx_buf_in_memory(ctx->buf)) {
             if (b == NULL) {
-                if (ctx->free) {
-                    cl = ctx->free;
-                    ctx->free = ctx->free->next;
-                    b = cl->buf;
-                    ngx_memzero(b, sizeof(ngx_buf_t));
+                cl = ngx_chain_get_free_buf(r->pool, &ctx->free);
+                if (cl == NULL) {
+                    return NGX_ERROR;
+                }
 
-                } else {
-                    b = ngx_calloc_buf(r->pool);
-                    if (b == NULL) {
-                        return NGX_ERROR;
-                    }
+                b = cl->buf;
 
-                    cl = ngx_alloc_chain_link(r->pool);
-                    if (cl == NULL) {
-                        return NGX_ERROR;
-                    }
-
-                    cl->buf = b;
-                }
+                ngx_memzero(b, sizeof(ngx_buf_t));
 
                 b->sync = 1;
 
-                cl->next = NULL;
                 *ctx->last_out = cl;
                 ctx->last_out = &cl->next;
             }