Lines Matching defs:req
370 auto req = static_cast<Request *>(w->data);
374 req->stream_id, req->data_prd);
380 req->stream_id, NGHTTP2_INTERNAL_ERROR);
387 ContinueTimer::ContinueTimer(struct ev_loop *loop, Request *req) : loop(loop) {
389 timer.data = req;
453 int submit_request(HttpClient *client, const Headers &headers, Request *req) {
454 auto scheme = util::get_uri_field(req->uri.c_str(), req->u, UF_SCHEMA);
455 auto build_headers = Headers{{":method", req->data_prd ? "POST" : "GET"},
456 {":path", req->make_reqpath()},
473 if (req->data_prd) {
476 util::utos(req->data_length));
509 req->method = method->value;
524 stream_id = nghttp2_submit_headers(client->session, 0, -1, &req->pri_spec,
525 nva.data(), nva.size(), req);
528 nghttp2_submit_request(client->session, &req->pri_spec, nva.data(),
529 nva.size(), req->data_prd, req);
540 req->stream_id = stream_id;
541 client->request_done(req);
543 req->req_nva = std::move(build_headers);
546 auto timer = std::make_unique<ContinueTimer>(client->loop, req);
547 req->continue_timer = std::move(timer);
758 for (auto req = std::begin(reqvec); req != std::end(reqvec); ++req) {
759 if ((*req)->continue_timer) {
760 (*req)->continue_timer->stop();
979 std::string req;
982 req = "OPTIONS *";
989 req = "GET ";
992 req = (*meth).value;
993 req += ' ';
996 req += reqvec[0]->make_reqpath();
1024 req += " HTTP/1.1\r\n";
1027 req += kv.name;
1028 req += ": ";
1029 req += kv.value;
1030 req += "\r\n";
1032 req += "\r\n";
1034 wb.append(req);
1038 std::cout << " HTTP Upgrade request\n" << req << std::endl;
1500 void HttpClient::request_done(Request *req) {
1501 if (req->stream_id % 2 == 0) {
1549 auto &req = reqvec[i];
1551 if (req->timing.state != RequestState::ON_COMPLETE) {
1558 auto &req_timing = req->timing;
1590 auto pushed = req->stream_id % 2 == 0;
1601 for (auto &nv : req->req_nva) {
1609 json_object_set_new(request, "method", json_string(req->method.c_str()));
1610 json_object_set_new(request, "url", json_string(req->uri.c_str()));
1623 for (auto &nv : req->res_nva) {
1631 json_object_set_new(response, "status", json_integer(req->status));
1639 json_object_set_new(content, "size", json_integer(req->response_len));
1641 auto content_type_ptr = http2::get_header(req->res_nva, "content-type");
1671 json_string(util::utos(req->stream_id).c_str()));
1680 void update_html_parser(HttpClient *client, Request *req, const uint8_t *data,
1682 if (!req->html_parser) {
1685 req->update_html_parser(data, len, fin);
1687 auto scheme = req->get_real_scheme();
1688 auto host = req->get_real_host();
1689 auto port = req->get_real_port();
1691 for (auto &p : req->html_parser->get_links()) {
1716 if (client->add_request(uri, nullptr, 0, pri_spec, req->level + 1)) {
1720 req->html_parser->clear_links();
1735 auto req = static_cast<Request *>(
1738 if (!req) {
1747 req->response_len += len;
1749 if (req->inflater) {
1756 nghttp2_gzip_inflate(req->inflater, out.data(), &outlen, data, &tlen);
1767 update_html_parser(client, req, out.data(), outlen, 0);
1779 update_html_parser(client, req, data, len, 0);
1794 void check_response_header(nghttp2_session *session, Request *req) {
1797 req->expect_final_response = false;
1799 auto status_hd = req->get_res_header(http2::HD__STATUS);
1802 nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE, req->stream_id,
1809 nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE, req->stream_id,
1814 req->status = status;
1816 for (auto &nv : req->res_nva) {
1824 if (req->status / 100 == 1) {
1825 if (req->continue_timer && (req->status == 100)) {
1827 req->continue_timer->dispatch_continue();
1830 req->expect_final_response = true;
1831 req->status = 0;
1832 req->res_nva.clear();
1833 http2::init_hdidx(req->res_hdidx);
1835 } else if (req->continue_timer) {
1837 req->continue_timer->stop();
1841 if (!req->inflater) {
1842 req->init_inflater();
1845 if (config.get_assets && req->level == 0) {
1846 if (!req->html_parser) {
1847 req->init_html_parser();
1859 auto req = static_cast<Request *>(
1861 if (!req) {
1868 req->record_response_start_time();
1884 auto req = std::make_unique<Request>("", u, nullptr, 0, pri_spec);
1885 req->stream_id = stream_id;
1887 nghttp2_session_set_stream_user_data(session, stream_id, req.get());
1889 client->request_done(req.get());
1890 req->record_request_start_time();
1891 client->reqvec.push_back(std::move(req));
1912 auto req = static_cast<Request *>(
1915 if (!req) {
1921 !req->expect_final_response) {
1925 if (req->header_buffer_size + namelen + valuelen > 64_k) {
1931 req->header_buffer_size += namelen + valuelen;
1935 http2::index_header(req->res_hdidx, token, req->res_nva.size());
1936 http2::add_header(req->res_nva, name, namelen, value, valuelen,
1941 auto req = static_cast<Request *>(nghttp2_session_get_stream_user_data(
1944 if (!req) {
1948 if (req->header_buffer_size + namelen + valuelen > 64_k) {
1955 req->header_buffer_size += namelen + valuelen;
1959 http2::index_header(req->req_hdidx, token, req->req_nva.size());
1960 http2::add_header(req->req_nva, name, namelen, value, valuelen,
1981 auto req = static_cast<Request *>(
1983 if (!req) {
1989 req->record_response_end_time();
1996 auto req = static_cast<Request *>(
1999 // req is nullptr.
2000 if (!req) {
2008 check_response_header(session, req);
2011 if (req->expect_final_response) {
2012 check_response_header(session, req);
2026 req->record_response_end_time();
2039 auto req = static_cast<Request *>(nghttp2_session_get_stream_user_data(
2041 if (!req) {
2046 req->header_buffer_size = 0;
2048 auto scheme = req->get_req_header(http2::HD__SCHEME);
2049 auto authority = req->get_req_header(http2::HD__AUTHORITY);
2050 auto path = req->get_req_header(http2::HD__PATH);
2053 authority = req->get_req_header(http2::HD_HOST);
2075 req->uri = uri;
2076 req->u = u;
2103 auto req = static_cast<Request *>(
2105 assert(req);
2106 req->record_request_start_time();
2124 auto req = static_cast<Request *>(
2126 if (!req) {
2131 if (req->continue_timer) {
2132 req->continue_timer->start();
2148 auto req = static_cast<Request *>(
2150 if (!req) {
2154 std::cerr << "[ERROR] request " << req->uri
2165 auto req = static_cast<Request *>(
2168 if (!req) {
2173 if (req->continue_timer) {
2174 req->continue_timer->stop();
2177 update_html_parser(client, req, nullptr, 0, 1);
2198 for (const auto &req : client.reqvec) {
2199 if (req->timing.state == RequestState::ON_COMPLETE) {
2200 reqs.push_back(req.get());
2234 for (const auto &req : reqs) {
2236 req->timing.response_end_time - base);
2238 req->timing.request_start_time - base);
2240 req->timing.response_end_time - req->timing.request_start_time);
2241 auto pushed = req->stream_id % 2 == 0;
2243 std::cout << std::setw(3) << req->stream_id << " " << std::setw(11)
2248 << std::setw(4) << req->status << " " << std::setw(4)
2249 << util::utos_unit(req->response_len) << " "
2250 << req->make_reqpath() << std::endl;
2371 for (auto &req : requests) {
2374 nghttp2_priority_spec_init(&pri_spec, dep_stream_id, std::get<3>(req), 0);
2377 client.add_request(std::get<0>(req), std::get<1>(req), std::get<2>(req),
2445 auto req = static_cast<Request *>(
2447 assert(req);
2451 while ((nread = pread(fd, buf, length, req->data_offset)) == -1 &&
2459 req->data_offset += nread;
2461 if (req->data_offset == req->data_length) {
2482 if (req->data_offset > req->data_length || nread == 0) {