From: Amos Jeffries Date: Sun, 29 May 2011 15:19:59 +0000 (-0600) Subject: Parser: shuffle request-line offsets into a sub-struct X-Git-Tag: take08~55^2~162 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=74f478f8336c29280c574a60b332bc5ca6299f9f;p=thirdparty%2Fsquid.git Parser: shuffle request-line offsets into a sub-struct Preparation for parsing other segments such as mime headers and reply status-line we need the segments data offsets to be kept separate. --- diff --git a/src/HttpParser.cc b/src/HttpParser.cc index 050c8c966b..4f78ec8031 100644 --- a/src/HttpParser.cc +++ b/src/HttpParser.cc @@ -10,12 +10,12 @@ HttpParser::clear() request_parse_status = HTTP_STATUS_NONE; buf = NULL; bufsiz = 0; - req_start = req_end = -1; + req.start = req.end = -1; hdr_start = hdr_end = -1; - m_start = m_end = -1; - u_start = u_end = -1; - v_start = v_end = -1; - v_maj = v_min = 0; + req.m_start = req.m_end = -1; + req.u_start = req.u_end = -1; + req.v_start = req.v_end = -1; + req.v_maj = req.v_min = 0; } void @@ -39,21 +39,21 @@ HttpParser::parseRequestFirstLine() // Single-pass parse: (provided we have the whole line anyways) - req_start = 0; + req.start = 0; if (Config.onoff.relaxed_header_parser) { - if (Config.onoff.relaxed_header_parser < 0 && buf[req_start] == ' ') + if (Config.onoff.relaxed_header_parser < 0 && buf[req.start] == ' ') debugs(74, DBG_IMPORTANT, "WARNING: Invalid HTTP Request: " << "Whitespace bytes received ahead of method. " << "Ignored due to relaxed_header_parser."); // Be tolerant of prefix spaces (other bytes are valid method values) - for (; req_start < bufsiz && buf[req_start] == ' '; req_start++); + for (; req.start < bufsiz && buf[req.start] == ' '; req.start++); } - req_end = -1; + req.end = -1; for (int i = 0; i < bufsiz; i++) { // track first and last whitespace (SP only) if (buf[i] == ' ') { last_whitespace = i; - if (first_whitespace < req_start) + if (first_whitespace < req.start) first_whitespace = i; } @@ -64,7 +64,7 @@ HttpParser::parseRequestFirstLine() // locate line terminator if (buf[i] == '\n') { - req_end = i; + req.end = i; line_end = i - 1; break; } @@ -82,12 +82,12 @@ HttpParser::parseRequestFirstLine() i++; if (buf[i + 1] == '\n') { - req_end = i + 1; + req.end = i + 1; break; } } else { if (buf[i + 1] == '\n') { - req_end = i + 1; + req.end = i + 1; line_end = i - 1; break; } @@ -99,9 +99,9 @@ HttpParser::parseRequestFirstLine() return -1; } } - if (req_end == -1) { - debugs(74, 5, "Parser: retval 0: from " << req_start << - "->" << req_end << ": needs more data to complete first line."); + if (req.end == -1) { + debugs(74, 5, "Parser: retval 0: from " << req.start << + "->" << req.end << ": needs more data to complete first line."); return 0; } @@ -115,45 +115,45 @@ HttpParser::parseRequestFirstLine() // generating HTTP status for any aborts as we go. // First non-whitespace = beginning of method - if (req_start > line_end) { + if (req.start > line_end) { request_parse_status = HTTP_BAD_REQUEST; return -1; } - m_start = req_start; + req.m_start = req.start; // First whitespace = end of method - if (first_whitespace > line_end || first_whitespace < req_start) { + if (first_whitespace > line_end || first_whitespace < req.start) { request_parse_status = HTTP_BAD_REQUEST; // no method return -1; } - m_end = first_whitespace - 1; - if (m_end < m_start) { + req.m_end = first_whitespace - 1; + if (req.m_end < req.m_start) { request_parse_status = HTTP_BAD_REQUEST; // missing URI? return -1; } // First non-whitespace after first SP = beginning of URL+Version - if (second_word > line_end || second_word < req_start) { + if (second_word > line_end || second_word < req.start) { request_parse_status = HTTP_BAD_REQUEST; // missing URI return -1; } - u_start = second_word; + req.u_start = second_word; // RFC 1945: SP and version following URI are optional, marking version 0.9 // we identify this by the last whitespace being earlier than URI start - if (last_whitespace < second_word && last_whitespace >= req_start) { - v_maj = 0; - v_min = 9; - u_end = line_end; + if (last_whitespace < second_word && last_whitespace >= req.start) { + req.v_maj = 0; + req.v_min = 9; + req.u_end = line_end; request_parse_status = HTTP_OK; // HTTP/0.9 return 1; } else { // otherwise last whitespace is somewhere after end of URI. - u_end = last_whitespace; + req.u_end = last_whitespace; // crop any trailing whitespace in the area we think of as URI - for (; u_end >= u_start && xisspace(buf[u_end]); u_end--); + for (; req.u_end >= req.u_start && xisspace(buf[req.u_end]); req.u_end--); } - if (u_end < u_start) { + if (req.u_end < req.u_start) { request_parse_status = HTTP_BAD_REQUEST; // missing URI return -1; } @@ -163,18 +163,18 @@ HttpParser::parseRequestFirstLine() request_parse_status = HTTP_BAD_REQUEST; // missing version return -1; } - v_start = last_whitespace + 1; - v_end = line_end; + req.v_start = last_whitespace + 1; + req.v_end = line_end; // We only accept HTTP protocol requests right now. // TODO: accept other protocols; RFC 2326 (RTSP protocol) etc - if ((v_end - v_start +1) < 5 || strncasecmp(&buf[v_start], "HTTP/", 5) != 0) { + if ((req.v_end - req.v_start +1) < 5 || strncasecmp(&buf[req.v_start], "HTTP/", 5) != 0) { #if USE_HTTP_VIOLATIONS // being lax; old parser accepted strange versions // there is a LOT of cases which are ambiguous, therefore we cannot use relaxed_header_parser here. - v_maj = 0; - v_min = 9; - u_end = line_end; + req.v_maj = 0; + req.v_min = 9; + req.u_end = line_end; request_parse_status = HTTP_OK; // treat as HTTP/0.9 return 1; #else @@ -183,7 +183,7 @@ HttpParser::parseRequestFirstLine() #endif } - int i = v_start + sizeof("HTTP/") -1; + int i = req.v_start + sizeof("HTTP/") -1; /* next should be 1 or more digits */ if (!isdigit(buf[i])) { @@ -200,7 +200,7 @@ HttpParser::parseRequestFirstLine() request_parse_status = HTTP_HTTP_VERSION_NOT_SUPPORTED; return -1; } - v_maj = maj; + req.v_maj = maj; /* next should be .; we -have- to have this as we have a whole line.. */ if (buf[i] != '.') { @@ -227,7 +227,7 @@ HttpParser::parseRequestFirstLine() request_parse_status = HTTP_HTTP_VERSION_NOT_SUPPORTED; return -1; } - v_min = min; + req.v_min = min; /* * Rightio - we have all the schtuff. Return true; we've got enough. @@ -241,11 +241,11 @@ HttpParserParseReqLine(HttpParser *hmsg) { PROF_start(HttpParserParseReqLine); int retcode = hmsg->parseRequestFirstLine(); - debugs(74, 5, "Parser: retval " << retcode << ": from " << hmsg->req_start << - "->" << hmsg->req_end << ": method " << hmsg->m_start << "->" << - hmsg->m_end << "; url " << hmsg->u_start << "->" << hmsg->u_end << - "; version " << hmsg->v_start << "->" << hmsg->v_end << " (" << hmsg->v_maj << - "/" << hmsg->v_min << ")"); + debugs(74, 5, "Parser: retval " << retcode << ": from " << hmsg->req.start << + "->" << hmsg->req.end << ": method " << hmsg->req.m_start << "->" << + hmsg->req.m_end << "; url " << hmsg->req.u_start << "->" << hmsg->req.u_end << + "; version " << hmsg->req.v_start << "->" << hmsg->req.v_end << " (" << hmsg->req.v_maj << + "/" << hmsg->req.v_min << ")"); PROF_stop(HttpParserParseReqLine); return retcode; } @@ -256,9 +256,9 @@ int HttpParserReqSz(HttpParser *hp) { assert(hp->state == HTTP_PARSE_NEW); - assert(hp->req_start != -1); - assert(hp->req_end != -1); - return hp->req_end - hp->req_start + 1; + assert(hp->req.start != -1); + assert(hp->req.end != -1); + return hp->req.end - hp->req.start + 1; } /* @@ -287,7 +287,7 @@ HttpParserHdrBuf(HttpParser *hp) int HttpParserRequestLen(HttpParser *hp) { - return hp->hdr_end - hp->req_start + 1; + return hp->hdr_end - hp->req.start + 1; } #endif diff --git a/src/HttpParser.h b/src/HttpParser.h index 601f7ac646..a29dca90cc 100644 --- a/src/HttpParser.h +++ b/src/HttpParser.h @@ -56,12 +56,20 @@ public: uint8_t state; const char *buf; int bufsiz; - int req_start, req_end; + + /// Offsets for pieces of the (HTTP request) Request-Line as per RFC 2616 + struct request_offsets { + int start, end; + int m_start, m_end; // method + int u_start, u_end; // url + int v_start, v_end; // version (full text) + int v_maj, v_min; // version numerics + } req; + + // Offsets for pieces of the MiME Header segment int hdr_start, hdr_end; - int m_start, m_end; - int u_start, u_end; - int v_start, v_end; - int v_maj, v_min; + + // TODO: Offsets for pieces of the (HTTP reply) Status-Line as per RFC 2616 /** HTTP status code to be used on the invalid-request error page * HTTP_STATUS_NONE indicates incomplete parse, HTTP_OK indicates no error. @@ -80,10 +88,10 @@ extern int HttpParserHdrSz(HttpParser *); extern const char * HttpParserHdrBuf(HttpParser *); extern int HttpParserRequestLen(HttpParser *hp); #else -#define HttpParserReqSz(hp) ( (hp)->req_end - (hp)->req_start + 1 ) +#define HttpParserReqSz(hp) ( (hp)->req.end - (hp)->req.start + 1 ) #define HttpParserHdrSz(hp) ( (hp)->hdr_end - (hp)->hdr_start + 1 ) #define HttpParserHdrBuf(hp) ( (hp)->buf + (hp)->hdr_start ) -#define HttpParserRequestLen(hp) ( (hp)->hdr_end - (hp)->req_start + 1 ) +#define HttpParserRequestLen(hp) ( (hp)->hdr_end - (hp)->req.start + 1 ) #endif diff --git a/src/client_side.cc b/src/client_side.cc index 622237fffa..6136fa8a20 100644 --- a/src/client_side.cc +++ b/src/client_side.cc @@ -2126,10 +2126,10 @@ parseHttpRequest(ConnStateData *conn, HttpParser *hp, HttpRequestMethod * method } /* Request line is valid here .. */ - *http_ver = HttpVersion(hp->v_maj, hp->v_min); + *http_ver = HttpVersion(hp->req.v_maj, hp->req.v_min); /* This call scans the entire request, not just the headers */ - if (hp->v_maj > 0) { + if (hp->req.v_maj > 0) { if ((req_sz = headersEnd(hp->buf, hp->bufsiz)) == 0) { debugs(33, 5, "Incomplete request, waiting for end of headers"); return NULL; @@ -2149,7 +2149,7 @@ parseHttpRequest(ConnStateData *conn, HttpParser *hp, HttpRequestMethod * method hp->hdr_end = req_sz - 1; - hp->hdr_start = hp->req_end + 1; + hp->hdr_start = hp->req.end + 1; /* Enforce max_request_size */ if (req_sz >= Config.maxRequestHeaderSize) { @@ -2159,7 +2159,7 @@ parseHttpRequest(ConnStateData *conn, HttpParser *hp, HttpRequestMethod * method } /* Set method_p */ - *method_p = HttpRequestMethod(&hp->buf[hp->m_start], &hp->buf[hp->m_end]+1); + *method_p = HttpRequestMethod(&hp->buf[hp->req.m_start], &hp->buf[hp->req.m_end]+1); /* deny CONNECT via accelerated ports */ if (*method_p == METHOD_CONNECT && conn && conn->port && conn->port->accel) { @@ -2182,7 +2182,7 @@ parseHttpRequest(ConnStateData *conn, HttpParser *hp, HttpRequestMethod * method * TODO: Use httpRequestParse here. */ /* XXX this code should be modified to take a const char * later! */ - req_hdr = (char *) hp->buf + hp->req_end + 1; + req_hdr = (char *) hp->buf + hp->req.end + 1; debugs(33, 3, "parseHttpRequest: req_hdr = {" << req_hdr << "}"); @@ -2215,11 +2215,11 @@ parseHttpRequest(ConnStateData *conn, HttpParser *hp, HttpRequestMethod * method * XXX this should eventually not use a malloc'ed buffer; the transformation code * below needs to be modified to not expect a mutable nul-terminated string. */ - char *url = (char *)xmalloc(hp->u_end - hp->u_start + 16); + char *url = (char *)xmalloc(hp->req.u_end - hp->req.u_start + 16); - memcpy(url, hp->buf + hp->u_start, hp->u_end - hp->u_start + 1); + memcpy(url, hp->buf + hp->req.u_start, hp->req.u_end - hp->req.u_start + 1); - url[hp->u_end - hp->u_start + 1] = '\0'; + url[hp->req.u_end - hp->req.u_start + 1] = '\0'; #if THIS_VIOLATES_HTTP_SPECS_ON_URL_TRANSFORMATION diff --git a/src/tests/testHttpParser.cc b/src/tests/testHttpParser.cc index f413f8d7e4..5081dc6382 100644 --- a/src/tests/testHttpParser.cc +++ b/src/tests/testHttpParser.cc @@ -40,19 +40,19 @@ testHttpParser::testParseRequestLine() 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 @@ -60,20 +60,20 @@ testHttpParser::testParseRequestLine() 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(); @@ -82,20 +82,20 @@ testHttpParser::testParseRequestLine() 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 @@ -104,20 +104,20 @@ testHttpParser::testParseRequestLine() 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 @@ -126,20 +126,20 @@ testHttpParser::testParseRequestLine() 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 @@ -150,19 +150,19 @@ testHttpParser::testParseRequestLine() 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) @@ -171,20 +171,20 @@ testHttpParser::testParseRequestLine() 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 @@ -193,20 +193,20 @@ testHttpParser::testParseRequestLine() 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 @@ -215,20 +215,20 @@ testHttpParser::testParseRequestLine() 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 @@ -237,20 +237,20 @@ testHttpParser::testParseRequestLine() 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 @@ -261,20 +261,20 @@ testHttpParser::testParseRequestLine() // 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 @@ -285,16 +285,16 @@ testHttpParser::testParseRequestLine() 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 @@ -303,20 +303,20 @@ testHttpParser::testParseRequestLine() 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 @@ -325,20 +325,20 @@ testHttpParser::testParseRequestLine() 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 @@ -347,20 +347,20 @@ testHttpParser::testParseRequestLine() 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. @@ -371,28 +371,28 @@ testHttpParser::testParseRequestLine() #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) @@ -402,20 +402,20 @@ testHttpParser::testParseRequestLine() 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) @@ -425,17 +425,17 @@ testHttpParser::testParseRequestLine() 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) @@ -444,20 +444,20 @@ testHttpParser::testParseRequestLine() 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); @@ -465,16 +465,16 @@ testHttpParser::testParseRequestLine() 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); @@ -482,16 +482,16 @@ testHttpParser::testParseRequestLine() 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); @@ -499,16 +499,16 @@ testHttpParser::testParseRequestLine() 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); @@ -516,16 +516,16 @@ testHttpParser::testParseRequestLine() 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 @@ -534,17 +534,17 @@ testHttpParser::testParseRequestLine() 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) @@ -553,19 +553,19 @@ testHttpParser::testParseRequestLine() 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) @@ -576,19 +576,19 @@ testHttpParser::testParseRequestLine() 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) @@ -599,39 +599,39 @@ testHttpParser::testParseRequestLine() 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 @@ -641,38 +641,38 @@ testHttpParser::testParseRequestLine() 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) @@ -681,19 +681,19 @@ testHttpParser::testParseRequestLine() 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) @@ -702,19 +702,19 @@ testHttpParser::testParseRequestLine() 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 @@ -723,20 +723,20 @@ testHttpParser::testParseRequestLine() 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 @@ -745,20 +745,20 @@ testHttpParser::testParseRequestLine() 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 @@ -767,20 +767,20 @@ testHttpParser::testParseRequestLine() 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) @@ -789,20 +789,20 @@ testHttpParser::testParseRequestLine() 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 @@ -811,20 +811,20 @@ testHttpParser::testParseRequestLine() 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) @@ -833,20 +833,20 @@ testHttpParser::testParseRequestLine() 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 @@ -855,17 +855,17 @@ testHttpParser::testParseRequestLine() 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 @@ -876,18 +876,18 @@ testHttpParser::testParseRequestLine() 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 @@ -898,15 +898,15 @@ testHttpParser::testParseRequestLine() 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(); }