Lines Matching refs:con

13 static int request_check_hostname(server *srv, connection *con, buffer *host) {  in request_check_hostname()  argument
23 UNUSED(con); in request_check_hostname()
284 int http_request_parse(server *srv, connection *con) { in http_request_parse() argument
306 if (con->conf.log_request_header) { in http_request_parse()
308 "fd:", con->fd, in http_request_parse()
309 "request-len:", con->request.request->used, in http_request_parse()
310 "\n", con->request.request); in http_request_parse()
313 if (con->request_count > 1 && in http_request_parse()
314 con->request.request->ptr[0] == '\r' && in http_request_parse()
315 con->request.request->ptr[1] == '\n') { in http_request_parse()
318 …buffer_copy_string_len(con->parse_request, con->request.request->ptr + 2, con->request.request->us… in http_request_parse()
321 buffer_copy_string_buffer(con->parse_request, con->request.request); in http_request_parse()
333 for (i = 0, first = 0; i < con->parse_request->used && line == 0; i++) { in http_request_parse()
334 char *cur = con->parse_request->ptr + i; in http_request_parse()
338 if (con->parse_request->ptr[i+1] == '\n') { in http_request_parse()
344 con->parse_request->ptr[i] = '\0'; in http_request_parse()
345 con->parse_request->ptr[i+1] = '\0'; in http_request_parse()
347 buffer_copy_string_len(con->request.request_line, con->parse_request->ptr, i); in http_request_parse()
350 con->http_status = 400; in http_request_parse()
351 con->response.keep_alive = 0; in http_request_parse()
352 con->keep_alive = 0; in http_request_parse()
358 con->request.request); in http_request_parse()
363 proto = con->parse_request->ptr + first; in http_request_parse()
370 con->http_status = 501; in http_request_parse()
371 con->response.keep_alive = 0; in http_request_parse()
372 con->keep_alive = 0; in http_request_parse()
378 con->request.request); in http_request_parse()
384 con->request.http_method = r; in http_request_parse()
417 con->http_status = 400; in http_request_parse()
418 con->keep_alive = 0; in http_request_parse()
424 con->request.request); in http_request_parse()
430 con->request.http_version = con->conf.allow_http11 ? HTTP_VERSION_1_1 : HTTP_VERSION_1_0; in http_request_parse()
432 con->request.http_version = HTTP_VERSION_1_0; in http_request_parse()
434 con->http_status = 505; in http_request_parse()
440 con->request.request); in http_request_parse()
445 con->http_status = 400; in http_request_parse()
446 con->keep_alive = 0; in http_request_parse()
452 con->request.request); in http_request_parse()
462 buffer_copy_string_len(con->request.uri, nuri, proto - nuri - 1); in http_request_parse()
468 buffer_copy_string_len(con->request.uri, nuri, proto - nuri - 1); in http_request_parse()
471 buffer_copy_string_len(con->request.uri, uri, proto - uri - 1); in http_request_parse()
475 for (j = 0; j < con->request.uri->used - 1; j++) { in http_request_parse()
476 if (!request_uri_is_valid_char(con->request.uri->ptr[j])) { in http_request_parse()
478 con->http_status = 400; in http_request_parse()
479 con->keep_alive = 0; in http_request_parse()
482 buf[0] = con->request.uri->ptr[j]; in http_request_parse()
485 if (con->request.uri->ptr[j] > 32 && in http_request_parse()
486 con->request.uri->ptr[j] != 127) { in http_request_parse()
495 con->request.uri->ptr[j]); in http_request_parse()
500 con->request.request); in http_request_parse()
507 buffer_copy_string_buffer(con->request.orig_uri, con->request.uri); in http_request_parse()
509 con->http_status = 0; in http_request_parse()
520 method = con->parse_request->ptr + first; in http_request_parse()
525 uri = con->parse_request->ptr + first; in http_request_parse()
530 con->http_status = 400; in http_request_parse()
531 con->response.keep_alive = 0; in http_request_parse()
532 con->keep_alive = 0; in http_request_parse()
538 con->request.request); in http_request_parse()
550 if (con->request.uri->used == 1) { in http_request_parse()
551 con->http_status = 400; in http_request_parse()
552 con->response.keep_alive = 0; in http_request_parse()
553 con->keep_alive = 0; in http_request_parse()
559 con->request.request); in http_request_parse()
568 if (NULL == (ds = (data_string *)array_get_unused_element(con->request.headers, TYPE_STRING))) { in http_request_parse()
574 array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
575 con->request.http_host = ds->value; in http_request_parse()
578 for (; i < con->parse_request->used && !done; i++) { in http_request_parse()
579 char *cur = con->parse_request->ptr + i; in http_request_parse()
618 con->http_status = 400; in http_request_parse()
619 con->keep_alive = 0; in http_request_parse()
620 con->response.keep_alive = 0; in http_request_parse()
623 "invalid character in key", con->request.request, cur, *cur, "-> 400"); in http_request_parse()
640 switch(con->parse_request->ptr[j + i]) { in http_request_parse()
660 con->request.request); in http_request_parse()
663 con->http_status = 400; in http_request_parse()
664 con->response.keep_alive = 0; in http_request_parse()
665 con->keep_alive = 0; in http_request_parse()
673 if (con->parse_request->ptr[i+1] == '\n' && i == first) { in http_request_parse()
675 con->parse_request->ptr[i] = '\0'; in http_request_parse()
676 con->parse_request->ptr[i+1] = '\0'; in http_request_parse()
688 con->request.request); in http_request_parse()
691 con->http_status = 400; in http_request_parse()
692 con->keep_alive = 0; in http_request_parse()
693 con->response.keep_alive = 0; in http_request_parse()
728 con->http_status = 400; in http_request_parse()
729 con->keep_alive = 0; in http_request_parse()
730 con->response.keep_alive = 0; in http_request_parse()
734 "CTL character in key", con->request.request, cur, *cur, "-> 400"); in http_request_parse()
738 con->request.request); in http_request_parse()
749 if (con->parse_request->ptr[i+1] == '\n') { in http_request_parse()
753 con->parse_request->ptr[i] = '\0'; in http_request_parse()
754 con->parse_request->ptr[i+1] = '\0'; in http_request_parse()
775 con->request.request); in http_request_parse()
779 con->http_status = 400; in http_request_parse()
780 con->keep_alive = 0; in http_request_parse()
781 con->response.keep_alive = 0; in http_request_parse()
788 if (NULL != (ds = (data_string *)array_get_element(con->request.headers, key_b->ptr))) { in http_request_parse()
795 key = con->parse_request->ptr + first; in http_request_parse()
808 … if (NULL == (ds = (data_string *)array_get_unused_element(con->request.headers, TYPE_STRING))) { in http_request_parse()
852 con->http_status = 400; in http_request_parse()
853 con->keep_alive = 0; in http_request_parse()
860 con->request.request); in http_request_parse()
862 array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
874 con->http_status = 400; in http_request_parse()
875 con->keep_alive = 0; in http_request_parse()
877 array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
886 con->request.content_length = r; in http_request_parse()
891 con->http_status = 400; in http_request_parse()
892 con->keep_alive = 0; in http_request_parse()
894 array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
899 if (!con->request.http_content_type) { in http_request_parse()
900 con->request.http_content_type = ds->value->ptr; in http_request_parse()
902 con->http_status = 400; in http_request_parse()
903 con->keep_alive = 0; in http_request_parse()
910 con->request.request); in http_request_parse()
912 array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
932 con->http_status = 417; in http_request_parse()
933 con->keep_alive = 0; in http_request_parse()
934 array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
942 } else if (!con->request.http_host) { in http_request_parse()
943 con->request.http_host = ds->value; in http_request_parse()
945 con->http_status = 400; in http_request_parse()
946 con->keep_alive = 0; in http_request_parse()
953 con->request.request); in http_request_parse()
955 array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
962 if (!con->request.http_if_modified_since) { in http_request_parse()
963 con->request.http_if_modified_since = ds->value->ptr; in http_request_parse()
964 } else if (0 == strcasecmp(con->request.http_if_modified_since, in http_request_parse()
971 con->http_status = 400; in http_request_parse()
972 con->keep_alive = 0; in http_request_parse()
979 con->request.request); in http_request_parse()
981 array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
986 if (!con->request.http_if_none_match) { in http_request_parse()
987 con->request.http_if_none_match = ds->value->ptr; in http_request_parse()
993 if (!con->request.http_range) { in http_request_parse()
1000 con->request.http_range = ds->value->ptr + 6; in http_request_parse()
1003 con->http_status = 400; in http_request_parse()
1004 con->keep_alive = 0; in http_request_parse()
1011 con->request.request); in http_request_parse()
1013 array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
1018 if (ds) array_insert_unique(con->request.headers, (data_unset *)ds); in http_request_parse()
1038 "CR without LF", con->request.request, "-> 400"); in http_request_parse()
1041 con->http_status = 400; in http_request_parse()
1042 con->keep_alive = 0; in http_request_parse()
1043 con->response.keep_alive = 0; in http_request_parse()
1058 con->http_status = 400; in http_request_parse()
1059 con->keep_alive = 0; in http_request_parse()
1068 con->header_len = i; in http_request_parse()
1072 if (con->request.http_version == HTTP_VERSION_1_1) { in http_request_parse()
1077 con->keep_alive = 1; in http_request_parse()
1079 con->keep_alive = 0; in http_request_parse()
1083 if (con->request.http_host == NULL || in http_request_parse()
1084 buffer_is_empty(con->request.http_host)) { in http_request_parse()
1085 con->http_status = 400; in http_request_parse()
1086 con->response.keep_alive = 0; in http_request_parse()
1087 con->keep_alive = 0; in http_request_parse()
1093 con->request.request); in http_request_parse()
1102 con->keep_alive = 1; in http_request_parse()
1104 con->keep_alive = 0; in http_request_parse()
1109 if (NULL != con->request.http_host && in http_request_parse()
1110 0 != request_check_hostname(srv, con, con->request.http_host)) { in http_request_parse()
1117 con->request.request); in http_request_parse()
1120 con->http_status = 400; in http_request_parse()
1121 con->response.keep_alive = 0; in http_request_parse()
1122 con->keep_alive = 0; in http_request_parse()
1127 switch(con->request.http_method) { in http_request_parse()
1131 if (con_length_set && con->request.content_length != 0) { in http_request_parse()
1136 con->keep_alive = 0; in http_request_parse()
1137 con->http_status = 400; in http_request_parse()
1148 con->keep_alive = 0; in http_request_parse()
1149 con->http_status = 411; in http_request_parse()
1163 if (con->request.content_length > SSIZE_MAX) { in http_request_parse()
1164 con->http_status = 413; in http_request_parse()
1165 con->keep_alive = 0; in http_request_parse()
1168 "request-size too long:", (off_t) con->request.content_length, "-> 413"); in http_request_parse()
1174 (con->request.content_length >> 10) > srv->srvconf.max_request_size) { in http_request_parse()
1179 con->http_status = 413; in http_request_parse()
1180 con->keep_alive = 0; in http_request_parse()
1183 "request-size too long:", (off_t) con->request.content_length, "-> 413"); in http_request_parse()
1189 if (con->request.content_length != 0) { in http_request_parse()
1197 int http_request_header_finished(server *srv, connection *con) { in http_request_header_finished() argument
1200 if (con->request.request->used < 5) return 0; in http_request_header_finished()
1202 …if (0 == memcmp(con->request.request->ptr + con->request.request->used - 5, "\r\n\r\n", 4)) return… in http_request_header_finished()
1203 if (NULL != strstr(con->request.request->ptr, "\r\n\r\n")) return 1; in http_request_header_finished()