Mercurial > hg > nginx-quic
comparison src/http/ngx_http_parse.c @ 820:cdbe991cbdf5
omit "#fragment"
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 28 Oct 2006 10:15:31 +0000 |
parents | 7d365efd704d |
children | 8634fcbfe075 |
comparison
equal
deleted
inserted
replaced
819:7d365efd704d | 820:cdbe991cbdf5 |
---|---|
280 #endif | 280 #endif |
281 case '?': | 281 case '?': |
282 r->args_start = p + 1; | 282 r->args_start = p + 1; |
283 state = sw_uri; | 283 state = sw_uri; |
284 break; | 284 break; |
285 case '#': | |
286 r->complex_uri = 1; | |
287 state = sw_uri; | |
288 break; | |
285 case '+': | 289 case '+': |
286 r->plus_in_uri = 1; | 290 r->plus_in_uri = 1; |
287 break; | 291 break; |
288 case '\0': | 292 case '\0': |
289 r->zero_in_uri = 1; | 293 r->zero_in_uri = 1; |
339 break; | 343 break; |
340 case '?': | 344 case '?': |
341 r->args_start = p + 1; | 345 r->args_start = p + 1; |
342 state = sw_uri; | 346 state = sw_uri; |
343 break; | 347 break; |
348 case '#': | |
349 r->complex_uri = 1; | |
350 state = sw_uri; | |
351 break; | |
344 case '+': | 352 case '+': |
345 r->plus_in_uri = 1; | 353 r->plus_in_uri = 1; |
346 break; | 354 break; |
347 case '\0': | 355 case '\0': |
348 r->zero_in_uri = 1; | 356 r->zero_in_uri = 1; |
364 break; | 372 break; |
365 case LF: | 373 case LF: |
366 r->uri_end = p; | 374 r->uri_end = p; |
367 r->http_minor = 9; | 375 r->http_minor = 9; |
368 goto done; | 376 goto done; |
377 case '#': | |
378 r->complex_uri = 1; | |
379 break; | |
369 case '\0': | 380 case '\0': |
370 r->zero_in_uri = 1; | 381 r->zero_in_uri = 1; |
371 break; | 382 break; |
372 } | 383 } |
373 break; | 384 break; |
820 quoted_state = state; | 831 quoted_state = state; |
821 state = sw_quoted; | 832 state = sw_quoted; |
822 break; | 833 break; |
823 case '?': | 834 case '?': |
824 r->args_start = p; | 835 r->args_start = p; |
836 goto args; | |
837 case '#': | |
825 goto done; | 838 goto done; |
826 case '.': | 839 case '.': |
827 r->uri_ext = u + 1; | 840 r->uri_ext = u + 1; |
828 *u++ = ch; | 841 *u++ = ch; |
829 break; | 842 break; |
851 quoted_state = state; | 864 quoted_state = state; |
852 state = sw_quoted; | 865 state = sw_quoted; |
853 break; | 866 break; |
854 case '?': | 867 case '?': |
855 r->args_start = p; | 868 r->args_start = p; |
869 goto args; | |
870 case '#': | |
856 goto done; | 871 goto done; |
857 case '+': | 872 case '+': |
858 r->plus_in_uri = 1; | 873 r->plus_in_uri = 1; |
859 default: | 874 default: |
860 state = sw_usual; | 875 state = sw_usual; |
881 quoted_state = state; | 896 quoted_state = state; |
882 state = sw_quoted; | 897 state = sw_quoted; |
883 break; | 898 break; |
884 case '?': | 899 case '?': |
885 r->args_start = p; | 900 r->args_start = p; |
901 goto args; | |
902 case '#': | |
886 goto done; | 903 goto done; |
887 case '+': | 904 case '+': |
888 r->plus_in_uri = 1; | 905 r->plus_in_uri = 1; |
889 default: | 906 default: |
890 state = sw_usual; | 907 state = sw_usual; |
913 quoted_state = state; | 930 quoted_state = state; |
914 state = sw_quoted; | 931 state = sw_quoted; |
915 break; | 932 break; |
916 case '?': | 933 case '?': |
917 r->args_start = p; | 934 r->args_start = p; |
935 goto args; | |
936 case '#': | |
918 goto done; | 937 goto done; |
919 #if (NGX_WIN32) | 938 #if (NGX_WIN32) |
920 case '.': | 939 case '.': |
921 state = sw_dot_dot_dot; | 940 state = sw_dot_dot_dot; |
922 *u++ = ch; | 941 *u++ = ch; |
956 quoted_state = state; | 975 quoted_state = state; |
957 state = sw_quoted; | 976 state = sw_quoted; |
958 break; | 977 break; |
959 case '?': | 978 case '?': |
960 r->args_start = p; | 979 r->args_start = p; |
980 goto args; | |
981 case '#': | |
961 goto done; | 982 goto done; |
962 case '+': | 983 case '+': |
963 r->plus_in_uri = 1; | 984 r->plus_in_uri = 1; |
964 default: | 985 default: |
965 state = sw_usual; | 986 state = sw_usual; |
999 *u++ = ch; | 1020 *u++ = ch; |
1000 ch = *p++; | 1021 ch = *p++; |
1001 break; | 1022 break; |
1002 } | 1023 } |
1003 | 1024 |
1004 if (ch == '\0') { | 1025 if (ch == '#') { |
1026 *u++ = ch; | |
1027 ch = *p++; | |
1028 | |
1029 } else if (ch == '\0') { | |
1005 r->zero_in_uri = 1; | 1030 r->zero_in_uri = 1; |
1006 } | 1031 } |
1007 | 1032 |
1008 state = quoted_state; | 1033 state = quoted_state; |
1009 break; | 1034 break; |
1028 return NGX_HTTP_PARSE_INVALID_REQUEST; | 1053 return NGX_HTTP_PARSE_INVALID_REQUEST; |
1029 } | 1054 } |
1030 } | 1055 } |
1031 | 1056 |
1032 done: | 1057 done: |
1058 | |
1059 r->uri.len = u - r->uri.data; | |
1060 | |
1061 if (r->uri_ext) { | |
1062 r->exten.len = u - r->uri_ext; | |
1063 r->exten.data = r->uri_ext; | |
1064 } | |
1065 | |
1066 r->uri_ext = NULL; | |
1067 | |
1068 return NGX_OK; | |
1069 | |
1070 args: | |
1071 | |
1072 while (p < r->uri_end) { | |
1073 if (*p++ != '#') { | |
1074 continue; | |
1075 } | |
1076 | |
1077 r->args.len = p - 1 - r->args_start; | |
1078 r->args.data = r->args_start; | |
1079 r->args_start = NULL; | |
1080 | |
1081 break; | |
1082 } | |
1033 | 1083 |
1034 r->uri.len = u - r->uri.data; | 1084 r->uri.len = u - r->uri.data; |
1035 | 1085 |
1036 if (r->uri_ext) { | 1086 if (r->uri_ext) { |
1037 r->exten.len = u - r->uri_ext; | 1087 r->exten.len = u - r->uri_ext; |