Mercurial > hg > nginx
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; |