Mercurial > hg > nginx-vendor-0-6
comparison src/http/modules/ngx_http_sub_filter_module.c @ 340:10cc350ed8a1 NGINX_0_6_14
nginx 0.6.14
*) Change: now by default the "echo" SSI command uses entity encoding.
*) Feature: the "encoding" parameter in the "echo" SSI command.
*) Feature: the "access_log" directive may be used inside the
"limit_except" block.
*) Bugfix: if all upstream servers were failed, then all servers had
got weight the was equal one until servers became alive; bug
appeared in 0.6.6.
*) Bugfix: a segmentation fault occurred in worker process if
$date_local and $date_gmt were used outside the
ngx_http_ssi_filter_module.
*) Bugfix: a segmentation fault might occur in worker process if debug
log was enabled.
Thanks to Andrei Nigmatulin.
*) Bugfix: ngx_http_memcached_module did not set
$upstream_response_time.
Thanks to Maxim Dounin.
*) Bugfix: a worker process may got caught in an endless loop, if the
memcached was used.
*) Bugfix: nginx supported low case only "close" and "keep-alive"
values in the "Connection" request header line; bug appeared in
0.6.11.
*) Bugfix: sub_filter did not work with empty substitution.
*) Bugfix: in sub_filter parsing.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 15 Oct 2007 00:00:00 +0400 |
parents | 2ceaee987f37 |
children | 6639b93e81b2 |
comparison
equal
deleted
inserted
replaced
339:d19550b67059 | 340:10cc350ed8a1 |
---|---|
367 { | 367 { |
368 return NGX_ERROR; | 368 return NGX_ERROR; |
369 } | 369 } |
370 } | 370 } |
371 | 371 |
372 b->memory = 1; | 372 if (ctx->sub.len) { |
373 b->pos = ctx->sub.data; | 373 b->memory = 1; |
374 b->last = ctx->sub.data + ctx->sub.len; | 374 b->pos = ctx->sub.data; |
375 b->last = ctx->sub.data + ctx->sub.len; | |
376 | |
377 } else { | |
378 b->sync = 1; | |
379 } | |
375 | 380 |
376 cl->buf = b; | 381 cl->buf = b; |
377 cl->next = NULL; | 382 cl->next = NULL; |
378 *ctx->last_out = cl; | 383 *ctx->last_out = cl; |
379 ctx->last_out = &cl->next; | 384 ctx->last_out = &cl->next; |
555 | 560 |
556 ch = *p; | 561 ch = *p; |
557 ch = ngx_tolower(ch); | 562 ch = ngx_tolower(ch); |
558 } | 563 } |
559 | 564 |
565 ctx->state = state; | |
560 ctx->pos = p; | 566 ctx->pos = p; |
561 ctx->looked = looked; | 567 ctx->looked = looked; |
562 ctx->copy_end = p; | 568 ctx->copy_end = p; |
563 | 569 |
564 if (ctx->copy_start == NULL) { | 570 if (ctx->copy_start == NULL) { |
576 | 582 |
577 if (ch == ctx->match.data[looked]) { | 583 if (ch == ctx->match.data[looked]) { |
578 looked++; | 584 looked++; |
579 | 585 |
580 if (looked == ctx->match.len) { | 586 if (looked == ctx->match.len) { |
587 if ((size_t) (p - ctx->pos) < looked) { | |
588 ctx->saved = 0; | |
589 } | |
590 | |
581 ctx->state = sub_start_state; | 591 ctx->state = sub_start_state; |
582 ctx->pos = p + 1; | 592 ctx->pos = p + 1; |
583 ctx->looked = looked; | 593 ctx->looked = looked; |
584 ctx->copy_end = copy_end; | 594 ctx->copy_end = copy_end; |
585 | 595 |