Buffers of zero size and filter module

Daniel Fiala danfiala at centrum.cz
Wed Jul 25 20:06:37 UTC 2012

Hi all.

I try to implement a bit more complicated filter module for Nginx.
Because of this I study source codes of existing http modules. I have to
allocate my own buffers for filtered data, I cannot change supplied buffers
in place.

I have been surprised, that it is necessary to handle buffers of zero size
in special way.

For example, in ngx_http_charset_filter_module.c is the following code:

   if (ngx_buf_size(b) == 0) {

                *ll = ngx_alloc_chain_link(r->pool);
                if (*ll == NULL) {
                    return NGX_ERROR;

                (*ll)->buf = b;
                (*ll)->next = NULL;

                ll = &(*ll)->next;


My questions are:

* Can such buffers of zero size really appear?
* Is the number of buffers of zero size small? As I understand, memory of
the chain-link is not recycled until the http request is not fully


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20120725/ad358fb3/attachment.html>

More information about the nginx-devel mailing list