Mercurial > hg > nginx-vendor-0-8
diff src/http/ngx_http_core_module.h @ 378:820f6378fc00 NGINX_0_7_1
nginx 0.7.1
*) Change: now locations are searched in a tree.
*) Change: the "optimize_server_names" directive was canceled due to
the "server_name_in_redirect" directive introduction.
*) Change: some long deprecated directives are not supported anymore.
*) Change: the "none" parameter in the "ssl_session_cache" directive;
now this is default parameter.
Thanks to Rob Mueller.
*) Bugfix: worker processes might not catch reconfiguration and log
rotation signals.
*) Bugfix: nginx could not be built on latest Fedora 9 Linux.
Thanks to Roxis.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 26 May 2008 00:00:00 +0400 |
parents | 6639b93e81b2 |
children | 0b6053502c55 |
line wrap: on
line diff
--- a/src/http/ngx_http_core_module.h +++ b/src/http/ngx_http_core_module.h @@ -28,6 +28,10 @@ #define NGX_HTTP_SATISFY_ANY 1 +typedef struct ngx_http_location_tree_node_s ngx_http_location_tree_node_t; +typedef struct ngx_http_core_loc_conf_s ngx_http_core_loc_conf_t; + + typedef struct { unsigned default_server:1; unsigned bind:1; @@ -127,37 +131,29 @@ typedef struct { typedef struct { - /* - * array of the ngx_http_core_loc_conf_t *, - * used in the ngx_http_core_find_location() and in the merge phase - */ - ngx_array_t locations; - - unsigned regex_start:15; - unsigned named_start:15; - /* array of the ngx_http_listen_t, "listen" directive */ - ngx_array_t listen; + ngx_array_t listen; /* array of the ngx_http_server_name_t, "server_name" directive */ - ngx_array_t server_names; + ngx_array_t server_names; /* server ctx */ - ngx_http_conf_ctx_t *ctx; + ngx_http_conf_ctx_t *ctx; - ngx_str_t server_name; + ngx_str_t server_name; - size_t connection_pool_size; - size_t request_pool_size; - size_t client_header_buffer_size; + size_t connection_pool_size; + size_t request_pool_size; + size_t client_header_buffer_size; - ngx_bufs_t large_client_header_buffers; + ngx_bufs_t large_client_header_buffers; - ngx_msec_t client_header_timeout; + ngx_msec_t client_header_timeout; - ngx_flag_t optimize_server_names; - ngx_flag_t ignore_invalid_headers; - ngx_flag_t merge_slashes; + ngx_flag_t ignore_invalid_headers; + ngx_flag_t merge_slashes; + + ngx_http_core_loc_conf_t **named_locations; } ngx_http_core_srv_conf_t; @@ -231,8 +227,6 @@ typedef struct { } ngx_http_err_page_t; -typedef struct ngx_http_core_loc_conf_s ngx_http_core_loc_conf_t; - struct ngx_http_core_loc_conf_s { ngx_str_t name; /* location name */ @@ -240,8 +234,6 @@ struct ngx_http_core_loc_conf_s { ngx_regex_t *regex; #endif - unsigned regex_start:15; - unsigned noname:1; /* "if () {}" block or limit_except */ unsigned named:1; @@ -251,14 +243,14 @@ struct ngx_http_core_loc_conf_s { unsigned auto_redirect:1; unsigned alias:1; - /* array of inclusive ngx_http_core_loc_conf_t */ - ngx_array_t *locations; + ngx_http_location_tree_node_t *static_locations; + ngx_http_core_loc_conf_t **regex_locations; /* pointer to the modules' loc_conf */ - void **loc_conf ; + void **loc_conf; uint32_t limit_except; - void **limit_except_loc_conf ; + void **limit_except_loc_conf; ngx_http_handler_pt handler; @@ -333,12 +325,39 @@ struct ngx_http_core_loc_conf_s { ngx_uint_t types_hash_max_size; ngx_uint_t types_hash_bucket_size; + ngx_queue_t *locations; + #if 0 ngx_http_core_loc_conf_t *prev_location; #endif }; +typedef struct { + ngx_queue_t queue; + ngx_http_core_loc_conf_t *exact; + ngx_http_core_loc_conf_t *inclusive; + ngx_str_t *name; + u_char *file_name; + ngx_uint_t line; + ngx_queue_t list; +} ngx_http_location_queue_t; + + +struct ngx_http_location_tree_node_s { + ngx_http_location_tree_node_t *left; + ngx_http_location_tree_node_t *right; + ngx_http_location_tree_node_t *tree; + + ngx_http_core_loc_conf_t *exact; + ngx_http_core_loc_conf_t *inclusive; + + u_char auto_redirect; + u_char len; + u_char name[1]; +}; + + void ngx_http_core_run_phases(ngx_http_request_t *r); ngx_int_t ngx_http_core_generic_phase(ngx_http_request_t *r, ngx_http_phase_handler_t *ph); @@ -401,7 +420,7 @@ extern ngx_uint_t ngx_http_max_module; \ r->allow_ranges = 0; \ if (r->headers_out.accept_ranges) { \ - r->headers_out.accept_ranges->hash = 0 ; \ + r->headers_out.accept_ranges->hash = 0; \ r->headers_out.accept_ranges = NULL; \ }