test Content-Type via hash:

*) ngx_http_test_content_type()
*) ngx_http_types_slot()
*) ngx_http_merge_types()
This commit is contained in:
Igor Sysoev
2008-08-04 11:29:09 +00:00
parent 42511c05c7
commit b5bc3f989f
5 changed files with 182 additions and 0 deletions

View File

@@ -1302,6 +1302,44 @@ ngx_http_core_send_continue(ngx_http_request_t *r)
}
void *
ngx_http_test_content_type(ngx_http_request_t *r, ngx_hash_t *types_hash)
{
u_char c, *p;
ngx_uint_t i, hash;
if (r->headers_out.content_type.len == 0) {
return NULL;
}
if (r->headers_out.content_type_lowcase == NULL) {
p = ngx_pnalloc(r->pool, r->headers_out.content_type_len);
if (p == NULL) {
return NULL;
}
r->headers_out.content_type_lowcase = p;
hash = 0;
for (i = 0; i < r->headers_out.content_type_len; i++) {
c = ngx_tolower(r->headers_out.content_type.data[i]);
hash = ngx_hash(hash, c);
*p++ = c;
}
r->headers_out.content_type_hash = hash;
}
return ngx_hash_find(types_hash,
r->headers_out.content_type_hash,
r->headers_out.content_type_lowcase,
r->headers_out.content_type_len);
}
ngx_int_t
ngx_http_set_content_type(ngx_http_request_t *r)
{