light optimization of ngx_http_test_content_type()

This commit is contained in:
Igor Sysoev 2009-05-25 09:00:35 +00:00
parent 7741b350e9
commit 77fd67cc38

View File

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