input.append("GET /\r\n", 7);
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET /\r\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
input.append("GET / HTTP/1.0\r\n", 16);
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.0\r\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
input.append("GET / HTTP/1.1\r\n", 16);
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.1\r\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/10.12\r\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.1\r\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_BAD_REQUEST, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.1 \n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET /fo o/ HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-5, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-2, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
Config.onoff.relaxed_header_parser = 1;
// Being tolerant we can ignore and elide these apparently benign CR
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.1\r\r\r\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
// strict mode treats these as several bare-CR in the request line which is explicitly invalid.
Config.onoff.relaxed_header_parser = 0;
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_BAD_REQUEST, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL(-1, output.req_end);
CPPUNIT_ASSERT_EQUAL(-1, output.m_start);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp(". / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("OPTIONS * HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("HELLOWORLD / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
HttpParserInit(&output, input.content(), input.contentSize());
#if USE_HTTP_VIOLATIONS
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(12, output.u_end);
CPPUNIT_ASSERT(memcmp("/ FOO/1.0", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
CPPUNIT_ASSERT_EQUAL(9, output.v_min);
#else
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_HTTP_VERSION_NOT_SUPPORTED, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(4, output.u_end);
CPPUNIT_ASSERT(memcmp("/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
HttpParserInit(&output, input.content(), input.contentSize());
Config.onoff.relaxed_header_parser = 1;
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(1, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
HttpParserInit(&output, input.content(), input.contentSize());
Config.onoff.relaxed_header_parser = 0;
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_BAD_REQUEST, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp(" GET / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("\tGET / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(0, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_STATUS_NONE, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL(-1, output.req_end);
CPPUNIT_ASSERT_EQUAL(-1, output.m_start);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(0, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_STATUS_NONE, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL(-1, output.req_end);
CPPUNIT_ASSERT_EQUAL(-1, output.m_start);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(0, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_STATUS_NONE, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL(-1, output.req_end);
CPPUNIT_ASSERT_EQUAL(-1, output.m_start);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(0, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_STATUS_NONE, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL(-1, output.req_end);
CPPUNIT_ASSERT_EQUAL(-1, output.m_start);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_BAD_REQUEST, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("A\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("/ HTTP/1.0\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
// When tolerantly ignoring SP prefix this case becomes ambiguous with HTTP/0.9 simple-request)
Config.onoff.relaxed_header_parser = 1;
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(1, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("/ HTTP/1.0\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
// When tolerantly ignoring SP prefix this case becomes ambiguous with HTTP/0.9 simple-request)
Config.onoff.relaxed_header_parser = 0;
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_BAD_REQUEST, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp(" / HTTP/1.0\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: %d-%d/%d '%.*s'\n", output.req_start, output.req_end, input.contentSize(), 16, input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET\x0B / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_BAD_REQUEST, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL(-1, output.req_end);
CPPUNIT_ASSERT_EQUAL(-1, output.m_start);
//printf("TEST: %d-%d/%d '%.*s'\n", output.req_start, output.req_end, input.contentSize(), 16, input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET\0 / HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_OK, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET HTTP/1.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_HTTP_VERSION_NOT_SUPPORTED, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_HTTP_VERSION_NOT_SUPPORTED, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_HTTP_VERSION_NOT_SUPPORTED, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/11\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: '%s'\n",input.content());
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_HTTP_VERSION_NOT_SUPPORTED, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("GET / HTTP/1.\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: binary-line\n");
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_BAD_REQUEST, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("\xB\xC\xE\xF\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: mixed whitespace\n");
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_BAD_REQUEST, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
CPPUNIT_ASSERT(memcmp("\t \t \t\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
//printf("TEST: mixed whitespace with CR\n");
HttpParserInit(&output, input.content(), input.contentSize());
CPPUNIT_ASSERT_EQUAL(-1, HttpParserParseReqLine(&output));
- CPPUNIT_ASSERT_EQUAL(HTTP_BAD_REQUEST, output.request_parse_status);
CPPUNIT_ASSERT_EQUAL(0, output.req_start);
CPPUNIT_ASSERT_EQUAL(-1, output.req_end);
CPPUNIT_ASSERT_EQUAL(-1, output.m_start);