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)