r1556, r1558 merge:

sub_filter fixes:

*) fix empty string replacement in sub_filter
*) add sub_filter parser fix similar to r1261 in SSI parser
*) fix case when pattern is split between two buffers:
   it had been fixed in SSI parser long ago
This commit is contained in:
Igor Sysoev 2007-11-07 13:59:32 +00:00
parent b2f5beaa06
commit 2163a4a058
1 changed files with 13 additions and 3 deletions

View File

@ -369,9 +369,14 @@ ngx_http_sub_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
}
}
b->memory = 1;
b->pos = ctx->sub.data;
b->last = ctx->sub.data + ctx->sub.len;
if (ctx->sub.len) {
b->memory = 1;
b->pos = ctx->sub.data;
b->last = ctx->sub.data + ctx->sub.len;
} else {
b->sync = 1;
}
cl->buf = b;
cl->next = NULL;
@ -557,6 +562,7 @@ ngx_http_sub_parse(ngx_http_request_t *r, ngx_http_sub_ctx_t *ctx)
ch = ngx_tolower(ch);
}
ctx->state = state;
ctx->pos = p;
ctx->looked = looked;
ctx->copy_end = p;
@ -578,6 +584,10 @@ ngx_http_sub_parse(ngx_http_request_t *r, ngx_http_sub_ctx_t *ctx)
looked++;
if (looked == ctx->match.len) {
if ((size_t) (p - ctx->pos) < looked) {
ctx->saved = 0;
}
ctx->state = sub_start_state;
ctx->pos = p + 1;
ctx->looked = looked;