output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start], (output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(9, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start], (output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start], (output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(9, output.req.v_min);
input.reset();
// RFC 1945 and 2616 : HTTP/1.0 full-request
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(13, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.0", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(13, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.0", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(13, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(13, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// RFC 2616 : future version full-request
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(15, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/10.12", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(10, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(12, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(15, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/10.12", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(10, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(12, output.req.v_min);
input.reset();
// space padded URL
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(5, output.u_start);
- CPPUNIT_ASSERT_EQUAL(5, output.u_end);
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(11, output.v_start);
- CPPUNIT_ASSERT_EQUAL(18, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(11, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(18, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// space padded version
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- CPPUNIT_ASSERT_EQUAL(13, output.u_end);
- CPPUNIT_ASSERT(memcmp("/ HTTP/1.1", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(13, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/ HTTP/1.1", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// whitespace inside URI. (nasty but happens)
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- CPPUNIT_ASSERT_EQUAL(9, output.u_end);
- CPPUNIT_ASSERT(memcmp("/fo o/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(11, output.v_start);
- CPPUNIT_ASSERT_EQUAL(18, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(9, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/fo o/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(11, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(18, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// additional data in buffer
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- CPPUNIT_ASSERT_EQUAL(4, output.u_end); // strangeness generated by following RFC
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(10, output.v_start);
- CPPUNIT_ASSERT_EQUAL(17, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end); // strangeness generated by following RFC
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(10, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(17, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// alternative EOL sequence: NL-only
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(13, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(13, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// alternative EOL sequence: double-NL-only
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(13, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(13, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// RELAXED alternative EOL sequence: multi-CR-NL
// 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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(13, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(13, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// STRICT alternative EOL sequence: multi-CR-NL
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);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// RFC 2616 : . method
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(0, output.m_end);
- CPPUNIT_ASSERT(memcmp(".", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(2, output.u_start);
- CPPUNIT_ASSERT_EQUAL(2, output.u_end);
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.v_start);
- CPPUNIT_ASSERT_EQUAL(11, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp(".", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(11, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// OPTIONS with * URL
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(6, output.m_end);
- CPPUNIT_ASSERT(memcmp("OPTIONS", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(8, output.u_start);
- CPPUNIT_ASSERT_EQUAL(8, output.u_end);
- CPPUNIT_ASSERT(memcmp("*", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(10, output.v_start);
- CPPUNIT_ASSERT_EQUAL(17, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("OPTIONS", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(8, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(8, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("*", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(10, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(17, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// unknown method
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(9, output.m_end);
- CPPUNIT_ASSERT(memcmp("HELLOWORLD", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(11, output.u_start);
- CPPUNIT_ASSERT_EQUAL(11, output.u_end);
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(13, output.v_start);
- CPPUNIT_ASSERT_EQUAL(20, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(9, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("HELLOWORLD", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(11, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(11, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(13, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(20, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// This stage of the parser does not yet accept non-HTTP protocol names.
#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);
+ CPPUNIT_ASSERT_EQUAL(12, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/ FOO/1.0", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(9, output.req.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);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
#endif
- CPPUNIT_ASSERT_EQUAL(0, output.req_start);
- CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req_end);
- CPPUNIT_ASSERT(memcmp("GET / FOO/1.0\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- CPPUNIT_ASSERT_EQUAL(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(12, output.v_end);
- CPPUNIT_ASSERT(memcmp("FOO/1.0", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req.end);
+ CPPUNIT_ASSERT(memcmp("GET / FOO/1.0\n", &output.buf[output.req.start],(output.req.end-output.req.start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(12, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("FOO/1.0", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
input.reset();
// RELAXED space padded method (in strict mode SP is reserved so invalid as a method byte)
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);
- CPPUNIT_ASSERT_EQUAL(1, output.m_start);
- CPPUNIT_ASSERT_EQUAL(3, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(5, output.u_start);
- CPPUNIT_ASSERT_EQUAL(5, output.u_end);
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(7, output.v_start);
- CPPUNIT_ASSERT_EQUAL(14, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(3, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(7, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(14, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// STRICT space padded method (in strict mode SP is reserved so invalid as a method byte)
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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// tab padded method (NP: tab is not SP so treated as any other binary)
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(3, output.m_end);
- CPPUNIT_ASSERT(memcmp("\tGET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(5, output.u_start);
- CPPUNIT_ASSERT_EQUAL(5, output.u_end);
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(7, output.v_start);
- CPPUNIT_ASSERT_EQUAL(14, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(3, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("\tGET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(7, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(14, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
input.append("GET", 3);
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
input.append("GET ", 4);
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
input.append("GET / HT", 8);
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
input.append("GET / HTTP/1.1", 14);
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// method-only
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// no method (but in a form which is ambiguous with HTTP/0.9 simple-request)
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(0, output.m_end);
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(2, output.u_start);
- CPPUNIT_ASSERT_EQUAL(9, output.u_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.0", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(9, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(9, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.0", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(9, output.req.v_min);
input.reset();
// RELAXED no method (an invalid format)
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);
- CPPUNIT_ASSERT_EQUAL(1, output.m_start);
- CPPUNIT_ASSERT_EQUAL(1, output.m_end);
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(3, output.u_start);
- CPPUNIT_ASSERT_EQUAL(10, output.u_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.0", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(9, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(3, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(10, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.0", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(9, output.req.v_min);
input.reset();
// STRICT no method (an invalid format)
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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// binary code in method (strange but ...)
input.append("GET\x0B / HTTP/1.1\n", 16);
- //printf("TEST: %d-%d/%d '%.*s'\n", output.req_start, output.req_end, input.contentSize(), 16, input.content());
+ //printf("TEST: %d-%d/%d '%.*s'\n", output.req.start, output.req.end, input.contentSize(), 16, input.content());
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(3, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET\x0B", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(5, output.u_start);
- CPPUNIT_ASSERT_EQUAL(5, output.u_end);
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(7, output.v_start);
- CPPUNIT_ASSERT_EQUAL(14, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(3, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET\x0B", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(7, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(14, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// CR in method
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// binary code NUL! in method (strange but ...)
input.append("GET\0 / HTTP/1.1\n", 16);
- //printf("TEST: %d-%d/%d '%.*s'\n", output.req_start, output.req_end, input.contentSize(), 16, input.content());
+ //printf("TEST: %d-%d/%d '%.*s'\n", output.req.start, output.req.end, input.contentSize(), 16, input.content());
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(3, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET\0", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(5, output.u_start);
- CPPUNIT_ASSERT_EQUAL(5, output.u_end);
- CPPUNIT_ASSERT(memcmp("/", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(7, output.v_start);
- CPPUNIT_ASSERT_EQUAL(14, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(1, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(3, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET\0", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(7, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(14, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_min);
input.reset();
// no URL (grammer otherwise correct)
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(5, output.u_start);
- CPPUNIT_ASSERT_EQUAL(12, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(9, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(5, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(12, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(9, output.req.v_min);
input.reset();
// no URL (grammer invalid, ambiguous with RFC 1945 HTTP/0.9 simple-request)
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- CPPUNIT_ASSERT_EQUAL(11, output.u_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.u_start],(output.u_end-output.u_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(9, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(11, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.1", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(9, output.req.v_min);
input.reset();
// no version
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(10, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(10, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// no major version
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(12, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(12, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// no version dot
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(12, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/11", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(12, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/11", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// negative major version (bug 3062)
output.reset(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/-999999.1\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(19, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/-999999.1", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req.end);
+ CPPUNIT_ASSERT(memcmp("GET / HTTP/-999999.1\n", &output.buf[output.req.start],(output.req.end-output.req.start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(19, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/-999999.1", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// no minor version
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(12, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(12, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// negative major version (bug 3062 corollary)
output.reset(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.-999999\n", &output.buf[output.req_start],(output.req_end-output.req_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(2, output.m_end);
- CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(4, output.u_start);
- 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(6, output.v_start);
- CPPUNIT_ASSERT_EQUAL(19, output.v_end);
- CPPUNIT_ASSERT(memcmp("HTTP/1.-999999", &output.buf[output.v_start],(output.v_end-output.v_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(1, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL((int)input.contentSize()-1, output.req.end);
+ CPPUNIT_ASSERT(memcmp("GET / HTTP/1.-999999\n", &output.buf[output.req.start],(output.req.end-output.req.start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(2, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("GET", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(4, output.req.u_end);
+ CPPUNIT_ASSERT(memcmp("/", &output.buf[output.req.u_start],(output.req.u_end-output.req.u_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(6, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(19, output.req.v_end);
+ CPPUNIT_ASSERT(memcmp("HTTP/1.-999999", &output.buf[output.req.v_start],(output.req.v_end-output.req.v_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(1, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// binary line
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// mixed whitespace line
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(0, output.m_start);
- CPPUNIT_ASSERT_EQUAL(0, output.m_end);
- CPPUNIT_ASSERT(memcmp("\t", &output.buf[output.m_start],(output.m_end-output.m_start+1)) == 0);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ 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);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.m_end);
+ CPPUNIT_ASSERT(memcmp("\t", &output.buf[output.req.m_start],(output.req.m_end-output.req.m_start+1)) == 0);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
// mixed whitespace line with CR middle
output.reset(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);
- CPPUNIT_ASSERT_EQUAL(-1, output.m_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.u_end);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_start);
- CPPUNIT_ASSERT_EQUAL(-1, output.v_end);
- CPPUNIT_ASSERT_EQUAL(0, output.v_maj);
- CPPUNIT_ASSERT_EQUAL(0, output.v_min);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.m_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.u_end);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_start);
+ CPPUNIT_ASSERT_EQUAL(-1, output.req.v_end);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_maj);
+ CPPUNIT_ASSERT_EQUAL(0, output.req.v_min);
input.reset();
}