Latest update - 8999
This commit is contained in:
@@ -329,7 +329,7 @@ static ngx_http_variable_t ngx_http_ssi_vars[] = {
|
||||
static ngx_int_t
|
||||
ngx_http_ssi_header_filter(ngx_http_request_t *r)
|
||||
{
|
||||
ngx_http_ssi_ctx_t *ctx;
|
||||
ngx_http_ssi_ctx_t *ctx, *mctx;
|
||||
ngx_http_ssi_loc_conf_t *slcf;
|
||||
|
||||
slcf = ngx_http_get_module_loc_conf(r, ngx_http_ssi_filter_module);
|
||||
@@ -341,6 +341,8 @@ ngx_http_ssi_header_filter(ngx_http_request_t *r)
|
||||
return ngx_http_next_header_filter(r);
|
||||
}
|
||||
|
||||
mctx = ngx_http_get_module_ctx(r->main, ngx_http_ssi_filter_module);
|
||||
|
||||
ctx = ngx_pcalloc(r->pool, sizeof(ngx_http_ssi_ctx_t));
|
||||
if (ctx == NULL) {
|
||||
return NGX_ERROR;
|
||||
@@ -367,6 +369,26 @@ ngx_http_ssi_header_filter(ngx_http_request_t *r)
|
||||
r->filter_need_in_memory = 1;
|
||||
|
||||
if (r == r->main) {
|
||||
|
||||
if (mctx) {
|
||||
|
||||
/*
|
||||
* if there was a shared context previously used as main,
|
||||
* copy variables and blocks
|
||||
*/
|
||||
|
||||
ctx->variables = mctx->variables;
|
||||
ctx->blocks = mctx->blocks;
|
||||
|
||||
#if (NGX_PCRE)
|
||||
ctx->ncaptures = mctx->ncaptures;
|
||||
ctx->captures = mctx->captures;
|
||||
ctx->captures_data = mctx->captures_data;
|
||||
#endif
|
||||
|
||||
mctx->shared = 0;
|
||||
}
|
||||
|
||||
ngx_http_clear_content_length(r);
|
||||
ngx_http_clear_accept_ranges(r);
|
||||
|
||||
@@ -379,6 +401,10 @@ ngx_http_ssi_header_filter(ngx_http_request_t *r)
|
||||
} else {
|
||||
ngx_http_weak_etag(r);
|
||||
}
|
||||
|
||||
} else if (mctx == NULL) {
|
||||
ngx_http_set_ctx(r->main, ctx, ngx_http_ssi_filter_module);
|
||||
ctx->shared = 1;
|
||||
}
|
||||
|
||||
return ngx_http_next_header_filter(r);
|
||||
@@ -405,6 +431,7 @@ ngx_http_ssi_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
|
||||
ctx = ngx_http_get_module_ctx(r, ngx_http_ssi_filter_module);
|
||||
|
||||
if (ctx == NULL
|
||||
|| (ctx->shared && r == r->main)
|
||||
|| (in == NULL
|
||||
&& ctx->buf == NULL
|
||||
&& ctx->in == NULL
|
||||
|
||||
@@ -71,6 +71,7 @@ typedef struct {
|
||||
u_char *captures_data;
|
||||
#endif
|
||||
|
||||
unsigned shared:1;
|
||||
unsigned conditional:2;
|
||||
unsigned encoding:2;
|
||||
unsigned block:1;
|
||||
|
||||
@@ -3964,7 +3964,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
||||
|
||||
ngx_str_t *value, size;
|
||||
ngx_url_t u;
|
||||
ngx_uint_t n;
|
||||
ngx_uint_t n, i;
|
||||
ngx_http_listen_opt_t lsopt;
|
||||
|
||||
cscf->listen = 1;
|
||||
@@ -4310,6 +4310,16 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
||||
#endif
|
||||
|
||||
for (n = 0; n < u.naddrs; n++) {
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
if (ngx_cmp_sockaddr(u.addrs[n].sockaddr, u.addrs[n].socklen,
|
||||
u.addrs[i].sockaddr, u.addrs[i].socklen, 0)
|
||||
== NGX_OK)
|
||||
{
|
||||
goto next;
|
||||
}
|
||||
}
|
||||
|
||||
lsopt.sockaddr = u.addrs[n].sockaddr;
|
||||
lsopt.socklen = u.addrs[n].socklen;
|
||||
lsopt.addr_text = u.addrs[n].name;
|
||||
@@ -4318,6 +4328,9 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
||||
if (ngx_http_add_listen(cf, cscf, &lsopt) != NGX_OK) {
|
||||
return NGX_CONF_ERROR;
|
||||
}
|
||||
|
||||
next:
|
||||
continue;
|
||||
}
|
||||
|
||||
return NGX_CONF_OK;
|
||||
|
||||
Reference in New Issue
Block a user