comparison src/core/ngx_string.c @ 138:8e6d4d96ec4c NGINX_0_3_16

nginx 0.3.16 *) Feature: the ngx_http_map_module. *) Feature: the "types_hash_max_size" and "types_hash_bucket_size" directives. *) Feature: the "ssi_value_length" directive. *) Feature: the "worker_rlimit_core" directive. *) Workaround: the connection number in logs was always 1 if nginx was built by the icc 8.1 or 9.0 compilers with optimization for Pentium 4. *) Bugfix: the "config timefmt" SSI command set incorrect time format. *) Bugfix: nginx did not close connection to IMAP/POP3 backend for the SSL connections; bug appeared in 0.3.13. Thanks to Rob Mueller. *) Bugfix: segmentation fault may occurred in at SSL shutdown; bug appeared in 0.3.13.
author Igor Sysoev <http://sysoev.ru>
date Fri, 16 Dec 2005 00:00:00 +0300
parents 91372f004adf
children 50bd986c5d63
comparison
equal deleted inserted replaced
137:768f51dd150b 138:8e6d4d96ec4c
978 decoded = (u_char) (c - 'a' + 10); 978 decoded = (u_char) (c - 'a' + 10);
979 state = sw_quoted_second; 979 state = sw_quoted_second;
980 break; 980 break;
981 } 981 }
982 982
983 /* skip the invalid quoted character */ 983 /* the invalid quoted character */
984 984
985 s++; 985 state = sw_usual;
986 size--; 986
987 *d++ = ch;
987 988
988 break; 989 break;
989 990
990 case sw_quoted_second: 991 case sw_quoted_second:
992
993 state = sw_usual;
991 994
992 if (ch >= '0' && ch <= '9') { 995 if (ch >= '0' && ch <= '9') {
993 ch = (u_char) ((decoded << 4) + ch - '0'); 996 ch = (u_char) ((decoded << 4) + ch - '0');
994
995 state = sw_usual;
996 997
997 if (ch > '%' && ch < 0x7f) { 998 if (ch > '%' && ch < 0x7f) {
998 *d++ = ch; 999 *d++ = ch;
999 break; 1000 break;
1000 } 1001 }
1011 if (ch == '?') { 1012 if (ch == '?') {
1012 *d++ = ch; 1013 *d++ = ch;
1013 goto done; 1014 goto done;
1014 } 1015 }
1015 1016
1016 state = sw_usual;
1017
1018 if (ch > '%' && ch < 0x7f) { 1017 if (ch > '%' && ch < 0x7f) {
1019 *d++ = ch; 1018 *d++ = ch;
1020 break; 1019 break;
1021 } 1020 }
1022 1021
1023 *d++ = '%'; *d++ = *(s - 2); *d++ = *(s - 1); 1022 *d++ = '%'; *d++ = *(s - 2); *d++ = *(s - 1);
1024 1023
1025 break; 1024 break;
1026 } 1025 }
1027 1026
1028 /* skip the invalid quoted character */ 1027 /* the invalid quoted character */
1029 1028
1030 break; 1029 break;
1031 } 1030 }
1032 } 1031 }
1033 1032