Mercurial > hg > nginx-vendor-0-5
comparison src/http/modules/ngx_http_sub_filter_module.c @ 326:f70f2f565fe0 NGINX_0_5_33
nginx 0.5.33
*) Change: now by default the "echo" SSI command uses entity encoding.
*) Feature: the "encoding" parameter in the "echo" SSI command.
*) Change: mail proxy was split on three modules: pop3, imap and smtp.
*) Feature: the --without-mail_pop3_module, --without-mail_imap_module,
and --without-mail_smtp_module configuration parameters.
*) Feature: the "smtp_greeting_delay" and "smtp_client_buffer"
directives of the ngx_mail_smtp_module.
*) Feature: the "server_name" and "valid_referers" directives support
regular expressions.
*) Feature: the "server_name", "map", and "valid_referers" directives
support the "www.example.*" wildcards.
*) Bugfix: sub_filter did not work with empty substitution.
*) Bugfix: in sub_filter parsing.
*) 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.5.32.
*) Bugfix: nginx could not start on Solaris if the shared PCRE library
located in non-standard place was used.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Wed, 07 Nov 2007 00:00:00 +0300 |
parents | 2ceaee987f37 |
children | 2eea67ed0bc2 |
comparison
equal
deleted
inserted
replaced
325:5bb1b28ddeaa | 326:f70f2f565fe0 |
---|---|
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 |