mirror of
https://github.com/nginx/nginx.git
synced 2025-06-10 03:22:48 +08:00
nginx-0.1.34-RELEASE import
*) Bugfix: the worker process may got caught in an endless loop if the big response part were include by SSI. *) Bugfix: the variables set by the "set" directive were not available in SSI. *) Feature: the "autoindex_localtime" directive. *) Bugfix: the empty value of the "proxy_set_header" directive forbids the client request header line passing.
This commit is contained in:
parent
3144ab6c01
commit
403d2443a3
@ -64,12 +64,16 @@ CFLAGS="$CFLAGS -wd171"
|
|||||||
CFLAGS="$CFLAGS -wd181"
|
CFLAGS="$CFLAGS -wd181"
|
||||||
# zero used for undefined preprocessing identifier
|
# zero used for undefined preprocessing identifier
|
||||||
CFLAGS="$CFLAGS -wd193"
|
CFLAGS="$CFLAGS -wd193"
|
||||||
|
#the format string ends before this argument
|
||||||
|
CFLAGS="$CFLAGS -wd268"
|
||||||
# invalid format string conversion
|
# invalid format string conversion
|
||||||
CFLAGS="$CFLAGS -wd269"
|
CFLAGS="$CFLAGS -wd269"
|
||||||
# conversion from "long long" to "size_t" may lose significant bits
|
# conversion from "long long" to "size_t" may lose significant bits
|
||||||
CFLAGS="$CFLAGS -wd810"
|
CFLAGS="$CFLAGS -wd810"
|
||||||
# parameter was never referenced
|
# parameter was never referenced
|
||||||
CFLAGS="$CFLAGS -wd869"
|
CFLAGS="$CFLAGS -wd869"
|
||||||
|
# "cc" clobber ignored, warnings for Liunx's htons()
|
||||||
|
CFLAGS="$CFLAGS -wd1469"
|
||||||
|
|
||||||
# STUB
|
# STUB
|
||||||
# enumerated type mixed with another type
|
# enumerated type mixed with another type
|
||||||
@ -82,6 +86,8 @@ CFLAGS="$CFLAGS -wd981"
|
|||||||
CFLAGS="$CFLAGS -wd1418"
|
CFLAGS="$CFLAGS -wd1418"
|
||||||
# external declaration in primary source file
|
# external declaration in primary source file
|
||||||
CFLAGS="$CFLAGS -wd1419"
|
CFLAGS="$CFLAGS -wd1419"
|
||||||
|
# non-POD class type passed through ellipsis
|
||||||
|
CFLAGS="$CFLAGS -wd1595"
|
||||||
|
|
||||||
# stop on warning
|
# stop on warning
|
||||||
CFLAGS="$CFLAGS -Werror"
|
CFLAGS="$CFLAGS -Werror"
|
||||||
|
@ -9,6 +9,49 @@
|
|||||||
<title lang="en">nginx changelog</title>
|
<title lang="en">nginx changelog</title>
|
||||||
|
|
||||||
|
|
||||||
|
<changes ver="0.1.34" date="26.05.2005">
|
||||||
|
|
||||||
|
<change type="bugfix">
|
||||||
|
<para lang="ru">
|
||||||
|
ÐÒÉ ×ËÌÀÞÅÎÉÉ ÂÏÌØÛÉÈ ÏÔ×ÅÔÏ× Ó ÐÏÍÏÝØÀ SSI ÒÁÂÏÞÉÊ ÐÒÏÃÅÓÓ ÍÏÇ ÚÁÃÉËÌÉÔØÓÑ.
|
||||||
|
</para>
|
||||||
|
<para lang="en">
|
||||||
|
the worker process may got caught in an endless loop if the big response
|
||||||
|
part were include by SSI.
|
||||||
|
</para>
|
||||||
|
</change>
|
||||||
|
|
||||||
|
<change type="bugfix">
|
||||||
|
<para lang="ru">
|
||||||
|
ÐÅÒÅÍÅÎÎÙÅ, ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÙÅ ÄÉÒÅËÔÉ×ÏÊ "set", ÎÅ ÂÙÌÉ ÄÏÓÔÕÐÎÙ × SSI.
|
||||||
|
</para>
|
||||||
|
<para lang="en">
|
||||||
|
the variables set by the "set" directive were not available in SSI.
|
||||||
|
</para>
|
||||||
|
</change>
|
||||||
|
|
||||||
|
<change type="feature">
|
||||||
|
<para lang="ru">
|
||||||
|
ÄÉÒÅËÔÉ×Á autoindex_localtime.
|
||||||
|
</para>
|
||||||
|
<para lang="en">
|
||||||
|
the "autoindex_localtime" directive.
|
||||||
|
</para>
|
||||||
|
</change>
|
||||||
|
|
||||||
|
<change type="bugfix">
|
||||||
|
<para lang="ru">
|
||||||
|
ÐÕÓÔÏÅ ÚÎÁÞÅÎÉÅ × ÄÉÒÅËÔÉ×Å proxy_set_header ÚÁÐÒÅÝÁÅÔ ÐÅÒÅÄÁÞÕ ÚÁÇÏÌÏ×ËÁ.
|
||||||
|
</para>
|
||||||
|
<para lang="en">
|
||||||
|
the empty value of the "proxy_set_header" directive forbids the client
|
||||||
|
request header line passing.
|
||||||
|
</para>
|
||||||
|
</change>
|
||||||
|
|
||||||
|
</changes>
|
||||||
|
|
||||||
|
|
||||||
<changes ver="0.1.33" date="23.05.2005">
|
<changes ver="0.1.33" date="23.05.2005">
|
||||||
|
|
||||||
<change type="bugfix">
|
<change type="bugfix">
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#define _NGINX_H_INCLUDED_
|
#define _NGINX_H_INCLUDED_
|
||||||
|
|
||||||
|
|
||||||
#define NGINX_VER "nginx/0.1.33"
|
#define NGINX_VER "nginx/0.1.34"
|
||||||
|
|
||||||
#define NGINX_VAR "NGINX"
|
#define NGINX_VAR "NGINX"
|
||||||
#define NGX_NEWPID_EXT ".newbin"
|
#define NGX_NEWPID_EXT ".newbin"
|
||||||
|
@ -33,6 +33,7 @@ typedef struct {
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ngx_flag_t enable;
|
ngx_flag_t enable;
|
||||||
|
ngx_flag_t localtime;
|
||||||
} ngx_http_autoindex_loc_conf_t;
|
} ngx_http_autoindex_loc_conf_t;
|
||||||
|
|
||||||
|
|
||||||
@ -58,6 +59,13 @@ static ngx_command_t ngx_http_autoindex_commands[] = {
|
|||||||
offsetof(ngx_http_autoindex_loc_conf_t, enable),
|
offsetof(ngx_http_autoindex_loc_conf_t, enable),
|
||||||
NULL },
|
NULL },
|
||||||
|
|
||||||
|
{ ngx_string("autoindex_localtime"),
|
||||||
|
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
|
||||||
|
ngx_conf_set_flag_slot,
|
||||||
|
NGX_HTTP_LOC_CONF_OFFSET,
|
||||||
|
offsetof(ngx_http_autoindex_loc_conf_t, localtime),
|
||||||
|
NULL },
|
||||||
|
|
||||||
ngx_null_command
|
ngx_null_command
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -391,7 +399,7 @@ ngx_http_autoindex_handler(ngx_http_request_t *r)
|
|||||||
|
|
||||||
*b->last++ = ' ';
|
*b->last++ = ' ';
|
||||||
|
|
||||||
ngx_gmtime(entry[i].mtime, &tm);
|
ngx_gmtime(entry[i].mtime + ngx_gmtoff * 60 * alcf->localtime, &tm);
|
||||||
|
|
||||||
b->last = ngx_sprintf(b->last, "%02d-%s-%d %02d:%02d ",
|
b->last = ngx_sprintf(b->last, "%02d-%s-%d %02d:%02d ",
|
||||||
tm.ngx_tm_mday,
|
tm.ngx_tm_mday,
|
||||||
@ -542,6 +550,7 @@ ngx_http_autoindex_create_loc_conf(ngx_conf_t *cf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
conf->enable = NGX_CONF_UNSET;
|
conf->enable = NGX_CONF_UNSET;
|
||||||
|
conf->localtime = NGX_CONF_UNSET;
|
||||||
|
|
||||||
return conf;
|
return conf;
|
||||||
}
|
}
|
||||||
@ -554,6 +563,7 @@ ngx_http_autoindex_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
|||||||
ngx_http_autoindex_loc_conf_t *conf = child;
|
ngx_http_autoindex_loc_conf_t *conf = child;
|
||||||
|
|
||||||
ngx_conf_merge_value(conf->enable, prev->enable, 0);
|
ngx_conf_merge_value(conf->enable, prev->enable, 0);
|
||||||
|
ngx_conf_merge_value(conf->localtime, prev->localtime, 0);
|
||||||
|
|
||||||
return NGX_CONF_OK;
|
return NGX_CONF_OK;
|
||||||
}
|
}
|
||||||
|
@ -1576,6 +1576,10 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
|||||||
|
|
||||||
*name = src[i].key;
|
*name = src[i].key;
|
||||||
|
|
||||||
|
if (src[i].value.len == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (ngx_http_script_variables_count(&src[i].value) == 0) {
|
if (ngx_http_script_variables_count(&src[i].value) == 0) {
|
||||||
copy = ngx_array_push_n(conf->headers_set_len,
|
copy = ngx_array_push_n(conf->headers_set_len,
|
||||||
sizeof(ngx_http_script_copy_code_t));
|
sizeof(ngx_http_script_copy_code_t));
|
||||||
|
@ -313,7 +313,7 @@ ngx_http_rewrite_var(ngx_http_request_t *r, uintptr_t data)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* the ngx_http_rewrite_module sets variables directly in r->variables,
|
* the ngx_http_rewrite_module sets variables directly in r->variables,
|
||||||
* and they should be handle by ngx_http_get_indexed_variable(),
|
* and they should be handled by ngx_http_get_indexed_variable(),
|
||||||
* so the handler is called only if the variable is not initialized
|
* so the handler is called only if the variable is not initialized
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ ngx_http_postpone_filter(ngx_http_request_t *r, ngx_chain_t *in)
|
|||||||
{
|
{
|
||||||
ngx_int_t rc;
|
ngx_int_t rc;
|
||||||
ngx_chain_t *out;
|
ngx_chain_t *out;
|
||||||
|
ngx_http_request_t *mr;
|
||||||
ngx_http_postponed_request_t *pr, **ppr;
|
ngx_http_postponed_request_t *pr, **ppr;
|
||||||
|
|
||||||
if (r->connection->write->error) {
|
if (r->connection->write->error) {
|
||||||
@ -98,14 +99,16 @@ ngx_http_postpone_filter(ngx_http_request_t *r, ngx_chain_t *in)
|
|||||||
out = in;
|
out = in;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (out == NULL && r->out == NULL && !r->connection->buffered) {
|
mr = r->main ? r->main : r;
|
||||||
|
|
||||||
|
if (out == NULL && mr->out == NULL && !mr->connection->buffered) {
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
||||||
"http postpone filter out \"%V\"", &r->uri);
|
"http postpone filter out \"%V\"", &r->uri);
|
||||||
|
|
||||||
rc = ngx_http_next_filter(r->main ? r->main : r, out);
|
rc = ngx_http_next_filter(mr, out);
|
||||||
|
|
||||||
if (rc == NGX_ERROR) {
|
if (rc == NGX_ERROR) {
|
||||||
/* NGX_ERROR may be returned by any filter */
|
/* NGX_ERROR may be returned by any filter */
|
||||||
|
@ -276,7 +276,12 @@ ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name)
|
|||||||
if (v[key].name.len == name->len
|
if (v[key].name.len == name->len
|
||||||
&& ngx_strncmp(v[key].name.data, name->data, name->len) == 0)
|
&& ngx_strncmp(v[key].name.data, name->data, name->len) == 0)
|
||||||
{
|
{
|
||||||
return v[key].handler(r, v[key].data);
|
if (v[key].flags & NGX_HTTP_VAR_INDEXED) {
|
||||||
|
return ngx_http_get_indexed_variable(r, v[key].data);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return v[key].handler(r, v[key].data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_strncmp(name->data, "http_", 5) == 0) {
|
if (ngx_strncmp(name->data, "http_", 5) == 0) {
|
||||||
@ -701,7 +706,7 @@ ngx_http_variables_init_vars(ngx_conf_t *cf)
|
|||||||
{
|
{
|
||||||
v[i].handler = av[n].handler;
|
v[i].handler = av[n].handler;
|
||||||
v[i].data = av[n].data;
|
v[i].data = av[n].data;
|
||||||
v[i].flags = av[n].flags;
|
v[i].flags = av[n].flags | NGX_HTTP_VAR_INDEXED;
|
||||||
|
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,7 @@ typedef ngx_http_variable_value_t *
|
|||||||
|
|
||||||
#define NGX_HTTP_VAR_CHANGABLE 1
|
#define NGX_HTTP_VAR_CHANGABLE 1
|
||||||
#define NGX_HTTP_VAR_NOCACHABLE 2
|
#define NGX_HTTP_VAR_NOCACHABLE 2
|
||||||
|
#define NGX_HTTP_VAR_INDEXED 4
|
||||||
|
|
||||||
|
|
||||||
struct ngx_http_variable_s {
|
struct ngx_http_variable_s {
|
||||||
|
Loading…
Reference in New Issue
Block a user