comparison src/core/ngx_conf_file.c @ 509:9b8c906f6e63 release-0.1.29

nginx-0.1.29-RELEASE import *) Feature: the ngx_http_ssi_module supports "include virtual" command. *) Feature: the ngx_http_ssi_module supports the condition command like 'if expr="$NAME"' and "else" and "endif" commands. Only one nested level is supported. *) Feature: the ngx_http_ssi_module supports the DATE_LOCAL and DATE_GMT variables and "config timefmt" command. *) Feature: the "ssi_ignore_recycled_buffers" directive. *) Bugfix: the "echo" command did not show the default value for the empty QUERY_STRING variable. *) Change: the ngx_http_proxy_module was rewritten. *) Feature: the "proxy_redirect", "proxy_pass_request_headers", "proxy_pass_request_body", and "proxy_method" directives. *) Feature: the "proxy_set_header" directive. The "proxy_x_var" was canceled and must be replaced with the proxy_set_header directive. *) Change: the "proxy_preserve_host" is canceled and must be replaced with the "proxy_set_header Host $host" and the "proxy_redirect off" directives, the "proxy_set_header Host $host:$proxy_port" directive and the appropriate proxy_redirect directives. *) Change: the "proxy_set_x_real_ip" is canceled and must be replaced with the "proxy_set_header X-Real-IP $remote_addr" directive. *) Change: the "proxy_add_x_forwarded_for" is canceled and must be replaced with the "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for" directive. *) Change: the "proxy_set_x_url" is canceled and must be replaced with the "proxy_set_header X-URL http://$host:$server_port$request_uri" directive. *) Feature: the "fastcgi_param" directive. *) Change: the "fastcgi_root", "fastcgi_set_var" and "fastcgi_params" directive are canceled and must be replaced with the fastcgi_param directives. *) Feature: the "index" directive can use the variables. *) Feature: the "index" directive can be used at http and server levels. *) Change: the last index only in the "index" directive can be absolute. *) Feature: the "rewrite" directive can use the variables. *) Feature: the "internal" directive. *) Feature: the CONTENT_LENGTH, CONTENT_TYPE, REMOTE_PORT, SERVER_ADDR, SERVER_PORT, SERVER_PROTOCOL, DOCUMENT_ROOT, SERVER_NAME, REQUEST_METHOD, REQUEST_URI, and REMOTE_USER variables. *) Change: nginx now passes the invalid lines in a client request headers or a backend response header. *) Bugfix: if the backend did not transfer response for a long time and the "send_timeout" was less than "proxy_read_timeout", then nginx returned the 408 response. *) Bugfix: the segmentation fault was occurred if the backend sent an invalid line in response header; the bug had appeared in 0.1.26. *) Bugfix: the segmentation fault may occurred in FastCGI fault tolerance configuration. *) Bugfix: the "expires" directive did not remove the previous "Expires" and "Cache-Control" headers. *) Bugfix: nginx did not take into account trailing dot in "Host" header line. *) Bugfix: the ngx_http_auth_module did not work under Linux. *) Bugfix: the rewrite directive worked incorrectly, if the arguments were in a request. *) Bugfix: nginx could not be built on MacOS X.
author Igor Sysoev <igor@sysoev.ru>
date Thu, 12 May 2005 14:58:06 +0000
parents cd3117ad9aab
children c12967aadd87
comparison
equal deleted inserted replaced
508:ca1020ce99ba 509:9b8c906f6e63
25 ngx_null_command 25 ngx_null_command
26 }; 26 };
27 27
28 28
29 ngx_module_t ngx_conf_module = { 29 ngx_module_t ngx_conf_module = {
30 NGX_MODULE, 30 NGX_MODULE_V1,
31 NULL, /* module context */ 31 NULL, /* module context */
32 ngx_conf_commands, /* module directives */ 32 ngx_conf_commands, /* module directives */
33 NGX_CONF_MODULE, /* module type */ 33 NGX_CONF_MODULE, /* module type */
34 NULL, /* init module */ 34 NULL, /* init module */
35 NULL /* init process */ 35 NULL /* init process */
334 static ngx_int_t 334 static ngx_int_t
335 ngx_conf_read_token(ngx_conf_t *cf) 335 ngx_conf_read_token(ngx_conf_t *cf)
336 { 336 {
337 u_char *start, ch, *src, *dst; 337 u_char *start, ch, *src, *dst;
338 int len; 338 int len;
339 int found, need_space, last_space, sharp_comment; 339 int found, need_space, last_space, sharp_comment, variable;
340 int quoted, s_quoted, d_quoted; 340 int quoted, s_quoted, d_quoted;
341 ssize_t n; 341 ssize_t n;
342 ngx_str_t *word; 342 ngx_str_t *word;
343 ngx_buf_t *b; 343 ngx_buf_t *b;
344 344
345 found = 0; 345 found = 0;
346 need_space = 0; 346 need_space = 0;
347 last_space = 1; 347 last_space = 1;
348 sharp_comment = 0; 348 sharp_comment = 0;
349 variable = 0;
349 quoted = s_quoted = d_quoted = 0; 350 quoted = s_quoted = d_quoted = 0;
350 351
351 cf->args->nelts = 0; 352 cf->args->nelts = 0;
352 b = cf->conf_file->buffer; 353 b = cf->conf_file->buffer;
353 start = b->pos; 354 start = b->pos;
490 default: 491 default:
491 last_space = 0; 492 last_space = 0;
492 } 493 }
493 494
494 } else { 495 } else {
496 if (ch == '{' && variable) {
497 continue;
498 }
499
500 variable = 0;
501
495 if (ch == '\\') { 502 if (ch == '\\') {
496 quoted = 1; 503 quoted = 1;
504 continue;
505 }
506
507 if (ch == '$') {
508 variable = 1;
497 continue; 509 continue;
498 } 510 }
499 511
500 if (d_quoted) { 512 if (d_quoted) {
501 if (ch == '"') { 513 if (ch == '"') {
800 return NGX_CONF_OK; 812 return NGX_CONF_OK;
801 } 813 }
802 814
803 815
804 char * 816 char *
817 ngx_conf_set_table_elt_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
818 {
819 char *p = conf;
820
821 ngx_str_t *value;
822 ngx_array_t **a;
823 ngx_table_elt_t *elt;
824 ngx_conf_post_t *post;
825
826 a = (ngx_array_t **) (p + cmd->offset);
827
828 if (*a == NULL) {
829 *a = ngx_array_create(cf->pool, 4, sizeof(ngx_table_elt_t));
830 if (*a == NULL) {
831 return NGX_CONF_ERROR;
832 }
833 }
834
835 elt = ngx_array_push(*a);
836 if (elt == NULL) {
837 return NGX_CONF_ERROR;
838 }
839
840 value = cf->args->elts;
841
842 elt->hash = 0;
843 elt->key = value[1];
844 elt->value = value[2];
845
846 if (cmd->post) {
847 post = cmd->post;
848 return post->post_handler(cf, post, elt);
849 }
850
851 return NGX_CONF_OK;
852 }
853
854
855 char *
805 ngx_conf_set_num_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) 856 ngx_conf_set_num_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
806 { 857 {
807 char *p = conf; 858 char *p = conf;
808 859
809 ngx_int_t *np; 860 ngx_int_t *np;