Mercurial > hg > nginx
changeset 1620:54377021b936 stable-0.5
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
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 07 Nov 2007 13:59:32 +0000 |
parents | e2ab812358bd |
children | ed9cd1702f7a |
files | src/http/modules/ngx_http_sub_filter_module.c |
diffstat | 1 files changed, 13 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_sub_filter_module.c Wed Nov 07 13:54:40 2007 +0000 +++ b/src/http/modules/ngx_http_sub_filter_module.c Wed Nov 07 13:59:32 2007 +0000 @@ -369,9 +369,14 @@ } } - 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 @@ ch = ngx_tolower(ch); } + ctx->state = state; ctx->pos = p; ctx->looked = looked; ctx->copy_end = p; @@ -578,6 +584,10 @@ 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;