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;