Mercurial > hg > nginx-vendor-0-7
comparison src/http/modules/ngx_http_ssi_filter_module.c @ 512:e1f4748dc78e NGINX_0_7_68
nginx 0.7.68
*) Bugfix: if there was a single server for given IPv6 address:port
pair, then captures in regular expressions in a "server_name"
directive did not work.
*) Bugfix: a segmentation fault might occur in a worker process, if the
"auth_basic" directive was used.
Thanks to Michail Laletin.
*) Bugfix: SSI response might be truncated after include with
wait="yes"; the bug had appeared in 0.7.25.
Thanks to Maxim Dounin.
*) Bugfix: the "sub_filter" directive might change character case on
partial match.
*) Bugfix: nginx treated large SSLv2 packets as plain requests.
Thanks to Miroslaw Jaworski.
*) Bugfix: nginx might close IPv6 listen socket during
reconfiguration.
Thanks to Maxim Dounin.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 14 Dec 2010 00:00:00 +0300 |
parents | 68c0ae0a4959 |
children |
comparison
equal
deleted
inserted
replaced
511:647973d42a2a | 512:e1f4748dc78e |
---|---|
68 } ngx_http_ssi_state_e; | 68 } ngx_http_ssi_state_e; |
69 | 69 |
70 | 70 |
71 static ngx_int_t ngx_http_ssi_output(ngx_http_request_t *r, | 71 static ngx_int_t ngx_http_ssi_output(ngx_http_request_t *r, |
72 ngx_http_ssi_ctx_t *ctx); | 72 ngx_http_ssi_ctx_t *ctx); |
73 static void ngx_http_ssi_buffered(ngx_http_request_t *r, | |
74 ngx_http_ssi_ctx_t *ctx); | |
73 static ngx_int_t ngx_http_ssi_parse(ngx_http_request_t *r, | 75 static ngx_int_t ngx_http_ssi_parse(ngx_http_request_t *r, |
74 ngx_http_ssi_ctx_t *ctx); | 76 ngx_http_ssi_ctx_t *ctx); |
75 static ngx_str_t *ngx_http_ssi_get_variable(ngx_http_request_t *r, | 77 static ngx_str_t *ngx_http_ssi_get_variable(ngx_http_request_t *r, |
76 ngx_str_t *name, ngx_uint_t key); | 78 ngx_str_t *name, ngx_uint_t key); |
77 static ngx_int_t ngx_http_ssi_evaluate_string(ngx_http_request_t *r, | 79 static ngx_int_t ngx_http_ssi_evaluate_string(ngx_http_request_t *r, |
795 if (rc == NGX_OK) { | 797 if (rc == NGX_OK) { |
796 continue; | 798 continue; |
797 } | 799 } |
798 | 800 |
799 if (rc == NGX_DONE || rc == NGX_AGAIN || rc == NGX_ERROR) { | 801 if (rc == NGX_DONE || rc == NGX_AGAIN || rc == NGX_ERROR) { |
802 ngx_http_ssi_buffered(r, ctx); | |
800 return rc; | 803 return rc; |
801 } | 804 } |
802 } | 805 } |
803 | 806 |
804 | 807 |
947 cl->next = ctx->free; | 950 cl->next = ctx->free; |
948 ctx->free = cl; | 951 ctx->free = cl; |
949 } | 952 } |
950 } | 953 } |
951 | 954 |
955 ngx_http_ssi_buffered(r, ctx); | |
956 | |
957 return rc; | |
958 } | |
959 | |
960 | |
961 static void | |
962 ngx_http_ssi_buffered(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx) | |
963 { | |
952 if (ctx->in || ctx->buf) { | 964 if (ctx->in || ctx->buf) { |
953 r->buffered |= NGX_HTTP_SSI_BUFFERED; | 965 r->buffered |= NGX_HTTP_SSI_BUFFERED; |
954 | 966 |
955 } else { | 967 } else { |
956 r->buffered &= ~NGX_HTTP_SSI_BUFFERED; | 968 r->buffered &= ~NGX_HTTP_SSI_BUFFERED; |
957 } | 969 } |
958 | |
959 return rc; | |
960 } | 970 } |
961 | 971 |
962 | 972 |
963 static ngx_int_t | 973 static ngx_int_t |
964 ngx_http_ssi_parse(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx) | 974 ngx_http_ssi_parse(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx) |