comparison src/http/modules/ngx_http_charset_filter_module.c @ 390:0b6053502c55 NGINX_0_7_7

nginx 0.7.7 *) Change: now the EAGAIN error returned by connect() is not considered as temporary error. *) Change: now the $ssl_client_cert variable value is a certificate with TAB character intended before each line except first one; an unchanged certificate is available in the $ssl_client_raw_cert variable. *) Feature: the "ask" parameter in the "ssl_verify_client" directive. *) Feature: byte-range processing improvements. Thanks to Maxim Dounin. *) Feature: the "directio" directive. *) Feature: MacOSX 1.5 sendfile() support. *) Bugfix: now in MacOSX and Cygwin locations are tested in case insensitive mode; however, the compare is provided by single-byte locales only. *) Bugfix: mail proxy SSL connections hanged, if select, poll, or /dev/poll methods were used. *) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module.
author Igor Sysoev <http://sysoev.ru>
date Wed, 30 Jul 2008 00:00:00 +0400
parents 984bb0b1399b
children 05981f639d21
comparison
equal deleted inserted replaced
389:930e48a26dde 390:0b6053502c55
640 out->next = NULL; 640 out->next = NULL;
641 641
642 size = buf->last - src; 642 size = buf->last - src;
643 643
644 saved = src; 644 saved = src;
645 n = ngx_utf_decode(&saved, size); 645 n = ngx_utf8_decode(&saved, size);
646 646
647 if (n == 0xfffffffe) { 647 if (n == 0xfffffffe) {
648 /* incomplete UTF-8 symbol */ 648 /* incomplete UTF-8 symbol */
649 649
650 ngx_memcpy(ctx->saved, src, size); 650 ngx_memcpy(ctx->saved, src, size);
708 break; 708 break;
709 } 709 }
710 } 710 }
711 711
712 saved = ctx->saved; 712 saved = ctx->saved;
713 n = ngx_utf_decode(&saved, i); 713 n = ngx_utf8_decode(&saved, i);
714 714
715 c = '\0'; 715 c = '\0';
716 716
717 if (n < 0x10000) { 717 if (n < 0x10000) {
718 table = (u_char **) ctx->table; 718 table = (u_char **) ctx->table;
816 continue; 816 continue;
817 } 817 }
818 818
819 len = buf->last - src; 819 len = buf->last - src;
820 820
821 n = ngx_utf_decode(&src, len); 821 n = ngx_utf8_decode(&src, len);
822 822
823 if (n < 0x10000) { 823 if (n < 0x10000) {
824 824
825 p = table[n >> 8]; 825 p = table[n >> 8];
826 826
1268 ctx->charset->length += i; 1268 ctx->charset->length += i;
1269 ctx->characters++; 1269 ctx->characters++;
1270 1270
1271 p = &table->src2dst[src * NGX_UTF_LEN] + 1; 1271 p = &table->src2dst[src * NGX_UTF_LEN] + 1;
1272 1272
1273 n = ngx_utf_decode(&p, i); 1273 n = ngx_utf8_decode(&p, i);
1274 1274
1275 if (n > 0xffff) { 1275 if (n > 0xffff) {
1276 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 1276 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
1277 "invalid value \"%V\"", &value[1]); 1277 "invalid value \"%V\"", &value[1]);
1278 return NGX_CONF_ERROR; 1278 return NGX_CONF_ERROR;