comparison src/core/ngx_string.c @ 644:6f21ae02fb01 NGINX_1_1_6

nginx 1.1.6 *) Change in internal API: now module context data are cleared while internal redirect to named location. Requested by Yichun Zhang. *) Change: if a server in an upstream failed, only one request will be sent to it after fail_timeout; the server will be considered alive if it will successfully respond to the request. *) Change: now the 0x7F-0x1F characters are escaped as \xXX in an access_log. *) Feature: "proxy/fastcgi/scgi/uwsgi_ignore_headers" directives support the following additional values: X-Accel-Limit-Rate, X-Accel-Buffering, X-Accel-Charset. *) Feature: decrease of memory consumption if SSL is used. *) Bugfix: some UTF-8 characters were processed incorrectly. Thanks to Alexey Kuts. *) Bugfix: the ngx_http_rewrite_module directives specified at "server" level were executed twice if no matching locations were defined. *) Bugfix: a socket leak might occurred if "aio sendfile" was used. *) Bugfix: connections with fast clients might be closed after send_timeout if file AIO was used. *) Bugfix: in the ngx_http_autoindex_module. *) Bugfix: the module ngx_http_mp4_module did not support seeking on 32-bit platforms.
author Igor Sysoev <http://sysoev.ru>
date Mon, 17 Oct 2011 00:00:00 +0400
parents eb208e0cf44d
children 4d05413aebad
comparison
equal deleted inserted replaced
643:a4bb0b481f6c 644:6f21ae02fb01
1209 size_t len; 1209 size_t len;
1210 uint32_t u, i, valid; 1210 uint32_t u, i, valid;
1211 1211
1212 u = **p; 1212 u = **p;
1213 1213
1214 if (u > 0xf0) { 1214 if (u >= 0xf0) {
1215 1215
1216 u &= 0x07; 1216 u &= 0x07;
1217 valid = 0xffff; 1217 valid = 0xffff;
1218 len = 3; 1218 len = 3;
1219 1219
1220 } else if (u > 0xe0) { 1220 } else if (u >= 0xe0) {
1221 1221
1222 u &= 0x0f; 1222 u &= 0x0f;
1223 valid = 0x7ff; 1223 valid = 0x7ff;
1224 len = 2; 1224 len = 2;
1225 1225
1226 } else if (u > 0xc0) { 1226 } else if (u >= 0xc2) {
1227 1227
1228 u &= 0x1f; 1228 u &= 0x1f;
1229 valid = 0x7f; 1229 valid = 0x7f;
1230 len = 1; 1230 len = 1;
1231 1231
1371 /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */ 1371 /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
1372 0x00000000, /* 0000 0000 0000 0000 0000 0000 0000 0000 */ 1372 0x00000000, /* 0000 0000 0000 0000 0000 0000 0000 0000 */
1373 1373
1374 /* ~}| {zyx wvut srqp onml kjih gfed cba` */ 1374 /* ~}| {zyx wvut srqp onml kjih gfed cba` */
1375 0x80000000, /* 1000 0000 0000 0000 0000 0000 0000 0000 */ 1375 0x80000000, /* 1000 0000 0000 0000 0000 0000 0000 0000 */
1376
1377 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
1378 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
1379 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
1380 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */
1381 };
1382
1383 /* not ALPHA, DIGIT, "-", ".", "_", "~" */
1384
1385 static uint32_t uri_component[] = {
1386 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
1387
1388 /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
1389 0xfc009fff, /* 1111 1100 0000 0000 1001 1111 1111 1111 */
1390
1391 /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
1392 0x78000001, /* 0111 1000 0000 0000 0000 0000 0000 0001 */
1393
1394 /* ~}| {zyx wvut srqp onml kjih gfed cba` */
1395 0xb8000001, /* 1011 1000 0000 0000 0000 0000 0000 0001 */
1376 1396
1377 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */ 1397 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
1378 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */ 1398 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
1379 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */ 1399 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
1380 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */ 1400 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */
1441 }; 1461 };
1442 1462
1443 /* mail_auth is the same as memcached */ 1463 /* mail_auth is the same as memcached */
1444 1464
1445 static uint32_t *map[] = 1465 static uint32_t *map[] =
1446 { uri, args, html, refresh, memcached, memcached }; 1466 { uri, args, uri_component, html, refresh, memcached, memcached };
1447 1467
1448 1468
1449 escape = map[type]; 1469 escape = map[type];
1450 1470
1451 if (dst == NULL) { 1471 if (dst == NULL) {