How to unset header in nginx module

Tsukasa Hamano hamano at osstech.co.jp
Fri Mar 16 16:58:14 UTC 2012


Hi,

I'd like to delete particular headers_in like a apr_table_unset() in
request handler of my module.

I wrote examples from the article:
http://wiki.nginx.org/HeadersManagement

static void unset_header(ngx_http_request_t *r, u_char *key){
    ngx_list_part_t *part;
    ngx_table_elt_t *h;
    ngx_uint_t i;
    size_t len = strlen((char *)key);

    part = &r->headers_in.headers.part;
    h = part->elts;
    for (i = 0; ; i++) {
        if (i >= part->nelts) {
            if (part->next == NULL) {
                break;
            }
            part = part->next;
            h = part->elts;
            i = 0;
        }
        if (len != h[i].key.len || ngx_strcasecmp(key, h[i].key.data) != 0) {
            h[i].hash = 0;
            h[i].key.len = 0;
            h[i].key.data = NULL;
            h[i].value.len = 0;
            h[i].value.data = NULL;
            h[i].lowcase_key = NULL;
        }
    }
}

But this code send empty header(only colon) line to backend.
like this:

:

Should I reconstruct list of headers_in.headers?
Or, should I modify http main module that to avoid sending null header?
Or, Is there any better(faster) way?

Thank you.

--
Open Source Solution Technology Corporation
Tsukasa Hamano <hamano at osstech.co.jp>
fingerprint = 2285 2111 6D34 3816 3C2E  A5B9 16BE D101 6069 BE55
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: OpenPGP Digital Signature
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20120317/98c10832/attachment.bin>


More information about the nginx mailing list