• Home
  • Raw
  • Download

Lines Matching refs:downstream

67   auto downstream = static_cast<Downstream *>(  in on_stream_close_callback()  local
70 if (!downstream) { in on_stream_close_callback()
74 auto &req = downstream->request(); in on_stream_close_callback()
80 if (downstream->get_request_state() == DownstreamState::CONNECT_FAIL) { in on_stream_close_callback()
81 upstream->remove_downstream(downstream); in on_stream_close_callback()
87 if (downstream->can_detach_downstream_connection()) { in on_stream_close_callback()
89 downstream->detach_downstream_connection(); in on_stream_close_callback()
92 downstream->set_request_state(DownstreamState::STREAM_CLOSED); in on_stream_close_callback()
98 upstream->remove_downstream(downstream); in on_stream_close_callback()
131 auto downstream = http->pop_downstream(); in upgrade_upstream() local
132 downstream->reset_upstream(this); in upgrade_upstream()
133 downstream->set_stream_id(1); in upgrade_upstream()
134 downstream->reset_upstream_rtimer(); in upgrade_upstream()
135 downstream->set_stream_id(1); in upgrade_upstream()
137 auto ptr = downstream.get(); in upgrade_upstream()
140 downstream_queue_.add_pending(std::move(downstream)); in upgrade_upstream()
177 auto downstream = static_cast<Downstream *>( in on_header_callback2() local
179 if (!downstream) { in on_header_callback2()
183 auto &req = downstream->request(); in on_header_callback2()
190 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) { in on_header_callback2()
205 if (upstream->error_reply(downstream, 431) != 0) { in on_header_callback2()
215 downstream->add_rcbuf(name); in on_header_callback2()
216 downstream->add_rcbuf(value); in on_header_callback2()
239 auto downstream = static_cast<Downstream *>( in on_invalid_header_callback2() local
241 if (!downstream) { in on_invalid_header_callback2()
255 upstream->rst_stream(downstream, NGHTTP2_PROTOCOL_ERROR); in on_invalid_header_callback2()
281 auto downstream = std::make_unique<Downstream>(this, handler_->get_mcpool(), in on_start_request() local
284 downstream.get()); in on_start_request()
286 downstream->reset_upstream_rtimer(); in on_start_request()
290 auto &req = downstream->request(); in on_start_request()
297 add_pending_downstream(std::move(downstream)); in on_start_request()
308 int Http2Upstream::on_request_headers(Downstream *downstream, in on_request_headers() argument
312 auto &req = downstream->request(); in on_request_headers()
315 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) { in on_request_headers()
331 << downstream->get_stream_id() << "\n" in on_request_headers()
356 if (error_reply(downstream, 501) != 0) { in on_request_headers()
367 rst_stream(downstream, NGHTTP2_PROTOCOL_ERROR); in on_request_headers()
394 req.path = http2::rewrite_clean_path(downstream->get_block_allocator(), in on_request_headers()
402 if (error_reply(downstream, 400) != 0) { in on_request_headers()
418 downstream->inspect_http2_request(); in on_request_headers()
420 downstream->set_request_state(DownstreamState::HEADER_COMPLETE); in on_request_headers()
424 if (error_reply(downstream, 400) != 0) { in on_request_headers()
434 if (mruby_ctx->run_on_request_proc(downstream) != 0) { in on_request_headers()
435 if (error_reply(downstream, 500) != 0) { in on_request_headers()
443 downstream->disable_upstream_rtimer(); in on_request_headers()
445 downstream->set_request_state(DownstreamState::MSG_COMPLETE); in on_request_headers()
448 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) { in on_request_headers()
452 start_downstream(downstream); in on_request_headers()
457 void Http2Upstream::start_downstream(Downstream *downstream) { in start_downstream() argument
458 if (downstream_queue_.can_activate(downstream->request().authority)) { in start_downstream()
459 initiate_downstream(downstream); in start_downstream()
463 downstream_queue_.mark_blocked(downstream); in start_downstream()
466 void Http2Upstream::initiate_downstream(Downstream *downstream) { in initiate_downstream() argument
474 auto dconn = handler_->get_downstream_connection(rv, downstream); in initiate_downstream()
477 rv = redirect_to_https(downstream); in initiate_downstream()
479 rv = error_reply(downstream, 502); in initiate_downstream()
482 rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in initiate_downstream()
485 downstream->set_request_state(DownstreamState::CONNECT_FAIL); in initiate_downstream()
486 downstream_queue_.mark_failure(downstream); in initiate_downstream()
494 rv = downstream->attach_downstream_connection(std::move(dconn)); in initiate_downstream()
504 if (mruby_ctx->run_on_request_proc(downstream) != 0) { in initiate_downstream()
505 if (error_reply(downstream, 500) != 0) { in initiate_downstream()
506 rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in initiate_downstream()
509 downstream_queue_.mark_failure(downstream); in initiate_downstream()
514 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) { in initiate_downstream()
520 rv = downstream->push_request_headers(); in initiate_downstream()
523 if (error_reply(downstream, 502) != 0) { in initiate_downstream()
524 rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in initiate_downstream()
527 downstream_queue_.mark_failure(downstream); in initiate_downstream()
532 downstream_queue_.mark_active(downstream); in initiate_downstream()
534 auto &req = downstream->request(); in initiate_downstream()
536 rv = downstream->end_upload_data(); in initiate_downstream()
538 rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in initiate_downstream()
556 auto downstream = static_cast<Downstream *>( in on_frame_recv_callback() local
558 if (!downstream) { in on_frame_recv_callback()
563 downstream->disable_upstream_rtimer(); in on_frame_recv_callback()
565 if (downstream->end_upload_data() != 0) { in on_frame_recv_callback()
566 if (downstream->get_response_state() != DownstreamState::MSG_COMPLETE) { in on_frame_recv_callback()
567 upstream->rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in on_frame_recv_callback()
571 downstream->set_request_state(DownstreamState::MSG_COMPLETE); in on_frame_recv_callback()
577 auto downstream = static_cast<Downstream *>( in on_frame_recv_callback() local
579 if (!downstream) { in on_frame_recv_callback()
584 downstream->reset_upstream_rtimer(); in on_frame_recv_callback()
588 return upstream->on_request_headers(downstream, frame); in on_frame_recv_callback()
592 downstream->disable_upstream_rtimer(); in on_frame_recv_callback()
594 if (downstream->end_upload_data() != 0) { in on_frame_recv_callback()
595 if (downstream->get_response_state() != DownstreamState::MSG_COMPLETE) { in on_frame_recv_callback()
596 upstream->rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in on_frame_recv_callback()
600 downstream->set_request_state(DownstreamState::MSG_COMPLETE); in on_frame_recv_callback()
633 auto downstream = static_cast<Downstream *>( in on_data_chunk_recv_callback() local
636 if (!downstream) { in on_data_chunk_recv_callback()
644 downstream->reset_upstream_rtimer(); in on_data_chunk_recv_callback()
646 if (downstream->push_upload_data_chunk(data, len) != 0) { in on_data_chunk_recv_callback()
647 if (downstream->get_response_state() != DownstreamState::MSG_COMPLETE) { in on_data_chunk_recv_callback()
648 upstream->rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in on_data_chunk_recv_callback()
679 auto downstream = static_cast<Downstream *>( in on_frame_send_callback() local
682 if (!downstream) { in on_frame_send_callback()
687 if (downstream->get_upgraded() || in on_frame_send_callback()
692 << (downstream->get_upgraded() ? "tunneled " : "") in on_frame_send_callback()
693 << "stream stream_id=" << downstream->get_stream_id() in on_frame_send_callback()
697 upstream->rst_stream(downstream, NGHTTP2_NO_ERROR); in on_frame_send_callback()
823 auto downstream = static_cast<Downstream *>( in on_frame_not_send_callback() local
825 if (downstream) { in on_frame_not_send_callback()
826 upstream->rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in on_frame_not_send_callback()
841 auto downstream = static_cast<Downstream *>(source->ptr); in send_data_callback() local
842 auto upstream = static_cast<Http2Upstream *>(downstream->get_upstream()); in send_data_callback()
843 auto body = downstream->get_response_buf(); in send_data_callback()
860 downstream->disable_upstream_wtimer(); in send_data_callback()
862 downstream->reset_upstream_wtimer(); in send_data_callback()
865 if (length > 0 && downstream->resume_read(SHRPX_NO_BUFFER, length) != 0) { in send_data_callback()
871 downstream->response_sent_body_length += length; in send_data_callback()
1251 auto downstream = dconn->get_downstream(); in downstream_read() local
1253 if (downstream->get_response_state() == DownstreamState::MSG_RESET) { in downstream_read()
1258 rst_stream(downstream, in downstream_read()
1260 downstream->get_response_rst_stream_error_code())); in downstream_read()
1261 downstream->pop_downstream_connection(); in downstream_read()
1264 } else if (downstream->get_response_state() == in downstream_read()
1266 if (error_reply(downstream, 502) != 0) { in downstream_read()
1269 downstream->pop_downstream_connection(); in downstream_read()
1273 auto rv = downstream->on_read(); in downstream_read()
1275 if (downstream->get_request_header_sent()) { in downstream_read()
1281 downstream->pop_downstream_connection(); in downstream_read()
1294 if (downstream->can_detach_downstream_connection()) { in downstream_read()
1296 downstream->detach_downstream_connection(); in downstream_read()
1320 auto downstream = dconn->get_downstream(); in downstream_eof() local
1323 DCLOG(INFO, dconn) << "EOF. stream_id=" << downstream->get_stream_id(); in downstream_eof()
1328 downstream->pop_downstream_connection(); in downstream_eof()
1332 if (downstream->get_response_state() == DownstreamState::HEADER_COMPLETE) { in downstream_eof()
1337 downstream->set_response_state(DownstreamState::MSG_COMPLETE); in downstream_eof()
1343 on_downstream_body_complete(downstream); in downstream_eof()
1344 } else if (downstream->get_response_state() != in downstream_eof()
1348 if (error_reply(downstream, 502) != 0) { in downstream_eof()
1358 auto downstream = dconn->get_downstream(); in downstream_error() local
1366 if (downstream->get_upgraded()) { in downstream_error()
1373 downstream->pop_downstream_connection(); in downstream_error()
1377 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) { in downstream_error()
1381 if (downstream->get_upgraded()) { in downstream_error()
1382 rst_stream(downstream, NGHTTP2_NO_ERROR); in downstream_error()
1385 if (downstream->get_response_state() == DownstreamState::HEADER_COMPLETE) { in downstream_error()
1386 if (downstream->get_upgraded()) { in downstream_error()
1387 on_downstream_body_complete(downstream); in downstream_error()
1389 rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in downstream_error()
1394 if (downstream->get_request_header_sent()) { in downstream_error()
1402 if (error_reply(downstream, status) != 0) { in downstream_error()
1406 downstream->set_response_state(DownstreamState::MSG_COMPLETE); in downstream_error()
1413 int Http2Upstream::rst_stream(Downstream *downstream, uint32_t error_code) { in rst_stream() argument
1415 ULOG(INFO, this) << "RST_STREAM stream_id=" << downstream->get_stream_id() in rst_stream()
1420 downstream->get_stream_id(), error_code); in rst_stream()
1445 auto downstream = static_cast<Downstream *>(source->ptr); in downstream_data_read_callback() local
1446 auto body = downstream->get_response_buf(); in downstream_data_read_callback()
1450 const auto &resp = downstream->response(); in downstream_data_read_callback()
1473 downstream->get_response_state() == DownstreamState::MSG_COMPLETE) { in downstream_data_read_callback()
1477 if (!downstream->get_upgraded()) { in downstream_data_read_callback()
1499 downstream->disable_upstream_wtimer(); in downstream_data_read_callback()
1507 int Http2Upstream::send_reply(Downstream *downstream, const uint8_t *body, in send_reply() argument
1514 data_prd.source.ptr = downstream; in send_reply()
1519 const auto &resp = downstream->response(); in send_reply()
1523 auto &balloc = downstream->get_block_allocator(); in send_reply()
1558 rv = nghttp2_submit_response(session_, downstream->get_stream_id(), in send_reply()
1566 auto buf = downstream->get_response_buf(); in send_reply()
1570 downstream->set_response_state(DownstreamState::MSG_COMPLETE); in send_reply()
1573 downstream->reset_upstream_wtimer(); in send_reply()
1579 int Http2Upstream::error_reply(Downstream *downstream, in error_reply() argument
1582 auto &resp = downstream->response(); in error_reply()
1584 auto &balloc = downstream->get_block_allocator(); in error_reply()
1588 auto body = downstream->get_response_buf(); in error_reply()
1590 downstream->set_response_state(DownstreamState::MSG_COMPLETE); in error_reply()
1593 data_prd.source.ptr = downstream; in error_reply()
1610 rv = nghttp2_submit_response(session_, downstream->get_stream_id(), in error_reply()
1618 downstream->reset_upstream_wtimer(); in error_reply()
1624 std::unique_ptr<Downstream> downstream) { in add_pending_downstream() argument
1625 downstream_queue_.add_pending(std::move(downstream)); in add_pending_downstream()
1628 void Http2Upstream::remove_downstream(Downstream *downstream) { in remove_downstream() argument
1629 if (downstream->accesslog_ready()) { in remove_downstream()
1630 handler_->write_accesslog(downstream); in remove_downstream()
1633 nghttp2_session_set_stream_user_data(session_, downstream->get_stream_id(), in remove_downstream()
1636 auto next_downstream = downstream_queue_.remove_and_get_blocked(downstream); in remove_downstream()
1650 int Http2Upstream::on_downstream_header_complete(Downstream *downstream) { in on_downstream_header_complete() argument
1653 const auto &req = downstream->request(); in on_downstream_header_complete()
1654 auto &resp = downstream->response(); in on_downstream_header_complete()
1656 auto &balloc = downstream->get_block_allocator(); in on_downstream_header_complete()
1659 if (downstream->get_non_final_response()) { in on_downstream_header_complete()
1660 DLOG(INFO, downstream) << "HTTP non-final response header"; in on_downstream_header_complete()
1662 DLOG(INFO, downstream) << "HTTP response header completed"; in on_downstream_header_complete()
1670 downstream->rewrite_location_response_header(req.scheme); in on_downstream_header_complete()
1674 if (!downstream->get_non_final_response()) { in on_downstream_header_complete()
1675 auto dconn = downstream->get_downstream_connection(); in on_downstream_header_complete()
1680 if (dmruby_ctx->run_on_response_proc(downstream) != 0) { in on_downstream_header_complete()
1681 if (error_reply(downstream, 500) != 0) { in on_downstream_header_complete()
1688 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) { in on_downstream_header_complete()
1696 if (mruby_ctx->run_on_response_proc(downstream) != 0) { in on_downstream_header_complete()
1697 if (error_reply(downstream, 500) != 0) { in on_downstream_header_complete()
1704 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) { in on_downstream_header_complete()
1728 !config->http2_proxy && (downstream->get_stream_id() % 2) && in on_downstream_header_complete()
1730 (downstream->get_non_final_response() || resp.http_status == 200) && in on_downstream_header_complete()
1733 if (prepare_push_promise(downstream) != 0) { in on_downstream_header_complete()
1744 if (downstream->get_non_final_response()) { in on_downstream_header_complete()
1753 log_response_headers(downstream, nva); in on_downstream_header_complete()
1757 downstream->get_stream_id(), nullptr, in on_downstream_header_complete()
1793 if (!req.regular_connect_method() || !downstream->get_upgraded()) { in on_downstream_header_complete()
1794 auto affinity_cookie = downstream->get_affinity_cookie_to_send(); in on_downstream_header_complete()
1796 auto dconn = downstream->get_downstream_connection(); in on_downstream_header_complete()
1846 if (downstream->get_stream_id() % 2 == 0) { in on_downstream_header_complete()
1853 log_response_headers(downstream, nva); in on_downstream_header_complete()
1862 data_prd.source.ptr = downstream; in on_downstream_header_complete()
1867 if (downstream->expect_response_body() || in on_downstream_header_complete()
1868 downstream->expect_response_trailer()) { in on_downstream_header_complete()
1874 rv = nghttp2_submit_response(session_, downstream->get_stream_id(), in on_downstream_header_complete()
1882 downstream->reset_upstream_wtimer(); in on_downstream_header_complete()
1890 int Http2Upstream::on_downstream_body(Downstream *downstream, in on_downstream_body() argument
1893 auto body = downstream->get_response_buf(); in on_downstream_body()
1897 nghttp2_session_resume_data(session_, downstream->get_stream_id()); in on_downstream_body()
1899 downstream->ensure_upstream_wtimer(); in on_downstream_body()
1907 int Http2Upstream::on_downstream_body_complete(Downstream *downstream) { in on_downstream_body_complete() argument
1909 DLOG(INFO, downstream) << "HTTP response completed"; in on_downstream_body_complete()
1912 auto &resp = downstream->response(); in on_downstream_body_complete()
1914 if (!downstream->validate_response_recv_body_length()) { in on_downstream_body_complete()
1915 rst_stream(downstream, NGHTTP2_PROTOCOL_ERROR); in on_downstream_body_complete()
1920 nghttp2_session_resume_data(session_, downstream->get_stream_id()); in on_downstream_body_complete()
1921 downstream->ensure_upstream_wtimer(); in on_downstream_body_complete()
1930 int Http2Upstream::resume_read(IOCtrlReason reason, Downstream *downstream, in resume_read() argument
1933 if (consume(downstream->get_stream_id(), consumed) != 0) { in resume_read()
1937 auto &req = downstream->request(); in resume_read()
1946 int Http2Upstream::on_downstream_abort_request(Downstream *downstream, in on_downstream_abort_request() argument
1950 rv = error_reply(downstream, status_code); in on_downstream_abort_request()
1961 Downstream *downstream) { in on_downstream_abort_request_with_https_redirect() argument
1964 rv = redirect_to_https(downstream); in on_downstream_abort_request_with_https_redirect()
1973 int Http2Upstream::redirect_to_https(Downstream *downstream) { in redirect_to_https() argument
1974 auto &req = downstream->request(); in redirect_to_https()
1976 return error_reply(downstream, 400); in redirect_to_https()
1981 return error_reply(downstream, 400); in redirect_to_https()
1984 auto &balloc = downstream->get_block_allocator(); in redirect_to_https()
1998 auto &resp = downstream->response(); in redirect_to_https()
2003 return send_reply(downstream, nullptr, 0); in redirect_to_https()
2027 Downstream *downstream, const std::vector<nghttp2_nv> &nva) const { in log_response_headers() argument
2034 << downstream->get_stream_id() << "\n" in log_response_headers()
2038 int Http2Upstream::on_timeout(Downstream *downstream) { in on_timeout() argument
2041 << downstream->get_stream_id(); in on_timeout()
2044 rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in on_timeout()
2059 int Http2Upstream::on_downstream_reset(Downstream *downstream, bool no_retry) { in on_downstream_reset() argument
2062 if (downstream->get_dispatch_state() != DispatchState::ACTIVE) { in on_downstream_reset()
2067 downstream->pop_downstream_connection(); in on_downstream_reset()
2073 if (!downstream->request_submission_ready()) { in on_downstream_reset()
2074 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) { in on_downstream_reset()
2076 downstream->pop_downstream_connection(); in on_downstream_reset()
2080 rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in on_downstream_reset()
2081 downstream->pop_downstream_connection(); in on_downstream_reset()
2088 downstream->pop_downstream_connection(); in on_downstream_reset()
2090 downstream->add_retry(); in on_downstream_reset()
2096 if (no_retry || downstream->no_more_retry()) { in on_downstream_reset()
2104 auto dconn = handler_->get_downstream_connection(rv, downstream); in on_downstream_reset()
2109 rv = downstream->attach_downstream_connection(std::move(dconn)); in on_downstream_reset()
2115 rv = downstream->push_request_headers(); in on_downstream_reset()
2124 rv = on_downstream_abort_request_with_https_redirect(downstream); in on_downstream_reset()
2126 rv = on_downstream_abort_request(downstream, 502); in on_downstream_reset()
2129 rst_stream(downstream, NGHTTP2_INTERNAL_ERROR); in on_downstream_reset()
2131 downstream->pop_downstream_connection(); in on_downstream_reset()
2138 int Http2Upstream::prepare_push_promise(Downstream *downstream) { in prepare_push_promise() argument
2141 const auto &req = downstream->request(); in prepare_push_promise()
2142 auto &resp = downstream->response(); in prepare_push_promise()
2149 auto &balloc = downstream->get_block_allocator(); in prepare_push_promise()
2176 rv = submit_push_promise(scheme, authority, path, downstream); in prepare_push_promise()
2190 Downstream *downstream) { in submit_push_promise() argument
2191 const auto &req = downstream->request(); in submit_push_promise()
2222 session_, NGHTTP2_FLAG_NONE, downstream->get_stream_id(), nva.data(), in submit_push_promise()
2258 int Http2Upstream::initiate_push(Downstream *downstream, const StringRef &uri) { in initiate_push() argument
2262 (downstream->get_stream_id() % 2) == 0) { in initiate_push()
2266 const auto &req = downstream->request(); in initiate_push()
2273 auto &balloc = downstream->get_block_allocator(); in initiate_push()
2291 auto &resp = downstream->response(); in initiate_push()
2297 rv = submit_push_promise(scheme, authority, path, downstream); in initiate_push()
2323 Http2Upstream::on_downstream_push_promise(Downstream *downstream, in on_downstream_push_promise() argument
2333 promised_downstream->set_assoc_stream_id(downstream->get_stream_id()); in on_downstream_push_promise()
2351 Downstream *downstream, Downstream *promised_downstream) { in on_downstream_push_promise_complete() argument
2364 session_, NGHTTP2_FLAG_NONE, downstream->get_stream_id(), nva.data(), in on_downstream_push_promise_complete()