comparison src/http/ngx_http_parse.c @ 291:117ccc7c4055

nginx-0.0.3-2004-03-16-16:35:20 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 16 Mar 2004 13:35:20 +0000
parents 87e73f067470
children d71c87d11b16
comparison
equal deleted inserted replaced
290:87e73f067470 291:117ccc7c4055
456 break; 456 break;
457 default: 457 default:
458 state = sw_name; 458 state = sw_name;
459 r->header_name_start = p - 1; 459 r->header_name_start = p - 1;
460 460
461 c = (char) (ch | 0x20); 461 c = (u_char) (ch | 0x20);
462 if (c >= 'a' && c <= 'z') { 462 if (c >= 'a' && c <= 'z') {
463 break; 463 break;
464 } 464 }
465 465
466 if (ch == '-' || ch == '_' || ch == '~' || ch == '.') { 466 if (ch == '-' || ch == '_' || ch == '~' || ch == '.') {
776 break; 776 break;
777 #endif 777 #endif
778 778
779 case sw_quoted: 779 case sw_quoted:
780 if (ch >= '0' && ch <= '9') { 780 if (ch >= '0' && ch <= '9') {
781 decoded = (char) (ch - '0'); 781 decoded = (u_char) (ch - '0');
782 state = sw_quoted_second; 782 state = sw_quoted_second;
783 ch = *p++; 783 ch = *p++;
784 break; 784 break;
785 } 785 }
786 786
787 c = (char) (ch | 0x20); 787 c = (u_char) (ch | 0x20);
788 if (c >= 'a' && c <= 'f') { 788 if (c >= 'a' && c <= 'f') {
789 decoded = (char) (c - 'a' + 10); 789 decoded = (u_char) (c - 'a' + 10);
790 state = sw_quoted_second; 790 state = sw_quoted_second;
791 ch = *p++; 791 ch = *p++;
792 break; 792 break;
793 } 793 }
794 794
795 return NGX_HTTP_PARSE_INVALID_REQUEST; 795 return NGX_HTTP_PARSE_INVALID_REQUEST;
796 796
797 case sw_quoted_second: 797 case sw_quoted_second:
798 if (ch >= '0' && ch <= '9') { 798 if (ch >= '0' && ch <= '9') {
799 ch = (char) ((decoded << 4) + ch - '0'); 799 ch = (u_char) ((decoded << 4) + ch - '0');
800 if (ch == '%') { 800 if (ch == '%') {
801 state = sw_usual; 801 state = sw_usual;
802 *u++ = ch; 802 *u++ = ch;
803 ch = *p++; 803 ch = *p++;
804 break; 804 break;
805 } 805 }
806 state = quoted_state; 806 state = quoted_state;
807 break; 807 break;
808 } 808 }
809 809
810 c = (char) (ch | 0x20); 810 c = (u_char) (ch | 0x20);
811 if (c >= 'a' && c <= 'f') { 811 if (c >= 'a' && c <= 'f') {
812 ch = (char) ((decoded << 4) + c - 'a' + 10); 812 ch = (u_char) ((decoded << 4) + c - 'a' + 10);
813 if (ch == '%') { 813 if (ch == '%') {
814 state = sw_usual; 814 state = sw_usual;
815 *u++ = ch; 815 *u++ = ch;
816 ch = *p++; 816 ch = *p++;
817 break; 817 break;