comparison src/http/modules/ngx_http_ssi_filter_module.c @ 192:af7f2341ecc5 NGINX_0_3_43

nginx 0.3.43 *) Bugfix: in the SSI.
author Igor Sysoev <http://sysoev.ru>
date Wed, 26 Apr 2006 00:00:00 +0400
parents 3689cd4e3228
children 003bd800ec2a
comparison
equal deleted inserted replaced
191:219b4d22ddd9 192:af7f2341ecc5
735 ngx_chain_t *cl; 735 ngx_chain_t *cl;
736 736
737 #if 1 737 #if 1
738 b = NULL; 738 b = NULL;
739 for (cl = ctx->out; cl; cl = cl->next) { 739 for (cl = ctx->out; cl; cl = cl->next) {
740 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
741 "ssi out: %p %p", cl->buf, cl->buf->pos);
740 if (cl->buf == b) { 742 if (cl->buf == b) {
741 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0, 743 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
742 "the same buf was used in ssi"); 744 "the same buf was used in ssi");
743 ngx_debug_point(); 745 ngx_debug_point();
744 return NGX_ERROR; 746 return NGX_ERROR;
1683 ngx_chain_t *cl; 1685 ngx_chain_t *cl;
1684 ngx_http_variable_value_t *vv; 1686 ngx_http_variable_value_t *vv;
1685 1687
1686 var = params[NGX_HTTP_SSI_ECHO_VAR]; 1688 var = params[NGX_HTTP_SSI_ECHO_VAR];
1687 1689
1690 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1691 "ssi echo \"%V\"", var);
1692
1688 key = 0; 1693 key = 0;
1689 1694
1690 for (i = 0; i < var->len; i++) { 1695 for (i = 0; i < var->len; i++) {
1691 var->data[i] = ngx_tolower(var->data[i]); 1696 var->data[i] = ngx_tolower(var->data[i]);
1692 key = ngx_hash(key, var->data[i]); 1697 key = ngx_hash(key, var->data[i]);
1795 } 1800 }
1796 } 1801 }
1797 1802
1798 name = params[NGX_HTTP_SSI_SET_VAR]; 1803 name = params[NGX_HTTP_SSI_SET_VAR];
1799 value = params[NGX_HTTP_SSI_SET_VALUE]; 1804 value = params[NGX_HTTP_SSI_SET_VALUE];
1805
1806 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1807 "ssi set \"%V\" \"%V\"", name, value);
1800 1808
1801 if (ngx_http_ssi_evaluate_string(r, ctx, value, 0) != NGX_OK) { 1809 if (ngx_http_ssi_evaluate_string(r, ctx, value, 0) != NGX_OK) {
1802 return NGX_HTTP_SSI_ERROR; 1810 return NGX_HTTP_SSI_ERROR;
1803 } 1811 }
1804 1812
1859 return NGX_OK; 1867 return NGX_OK;
1860 } 1868 }
1861 1869
1862 expr = params[NGX_HTTP_SSI_IF_EXPR]; 1870 expr = params[NGX_HTTP_SSI_IF_EXPR];
1863 1871
1872 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1873 "ssi if expr=\"%V\"", expr);
1874
1864 left.data = expr->data; 1875 left.data = expr->data;
1865 last = expr->data + expr->len; 1876 last = expr->data + expr->len;
1866 1877
1867 for (p = left.data; p < last; p++) { 1878 for (p = left.data; p < last; p++) {
1868 if (*p >= 'A' && *p <= 'Z') { 1879 if (*p >= 'A' && *p <= 'Z') {
2023 2034
2024 static ngx_int_t 2035 static ngx_int_t
2025 ngx_http_ssi_else(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx, 2036 ngx_http_ssi_else(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx,
2026 ngx_str_t **params) 2037 ngx_str_t **params)
2027 { 2038 {
2039 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
2040 "ssi else");
2041
2028 if (ctx->output_chosen) { 2042 if (ctx->output_chosen) {
2029 ctx->output = 0; 2043 ctx->output = 0;
2030 } else { 2044 } else {
2031 ctx->output = 1; 2045 ctx->output = 1;
2032 } 2046 }
2039 2053
2040 static ngx_int_t 2054 static ngx_int_t
2041 ngx_http_ssi_endif(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx, 2055 ngx_http_ssi_endif(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx,
2042 ngx_str_t **params) 2056 ngx_str_t **params)
2043 { 2057 {
2058 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
2059 "ssi endif");
2060
2044 ctx->output = 1; 2061 ctx->output = 1;
2045 ctx->output_chosen = 0; 2062 ctx->output_chosen = 0;
2046 ctx->conditional = 0; 2063 ctx->conditional = 0;
2047 2064
2048 return NGX_OK; 2065 return NGX_OK;