Lines Matching refs:downstream

113   auto downstream =
116 attach_downstream(std::move(downstream));
139 auto downstream = upstream->get_downstream();
140 auto &req = downstream->request();
142 auto &balloc = downstream->get_block_allocator();
153 assert(downstream->get_request_state() == DownstreamState::INITIAL);
154 downstream->set_request_state(
176 auto downstream = upstream->get_downstream();
177 auto &req = downstream->request();
185 if (downstream->get_request_state() == DownstreamState::INITIAL) {
186 downstream->set_request_state(
192 if (downstream->get_request_state() == DownstreamState::INITIAL) {
201 downstream->set_request_state(
231 auto downstream = upstream->get_downstream();
232 auto &req = downstream->request();
240 if (downstream->get_request_state() == DownstreamState::INITIAL) {
241 downstream->set_request_state(
247 if (downstream->get_request_state() == DownstreamState::INITIAL) {
342 auto downstream = upstream->get_downstream();
343 auto &req = downstream->request();
344 auto &balloc = downstream->get_block_allocator();
420 downstream->inspect_http1_request();
423 downstream->set_chunked_request(true);
466 downstream->set_request_state(DownstreamState::HEADER_COMPLETE);
468 auto &resp = downstream->response();
480 if (mruby_ctx->run_on_request_proc(downstream) != 0) {
494 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) {
503 auto dconn = handler->get_downstream_connection(rv, downstream);
507 upstream->redirect_to_https(downstream);
509 downstream->set_request_state(DownstreamState::CONNECT_FAIL);
516 if (downstream->attach_downstream_connection(std::move(dconn)) == 0) {
526 if (dmruby_ctx->run_on_request_proc(downstream) != 0) {
531 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) {
537 rv = downstream->push_request_headers();
548 if (downstream->get_expect_100_continue()) {
549 auto output = downstream->get_response_buf();
564 auto downstream = upstream->get_downstream();
565 rv = downstream->push_upload_data_chunk(
570 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) {
589 auto downstream = upstream->get_downstream();
590 auto &req = downstream->request();
591 auto &balloc = downstream->get_block_allocator();
597 downstream->set_request_state(DownstreamState::MSG_COMPLETE);
598 rv = downstream->end_upload_data();
600 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) {
613 downstream->get_http2_upgrade_request() &&
630 auto downstream = get_downstream();
636 // downstream can be nullptr here, because it is initialized in the
638 if (downstream && downstream->get_upgraded()) {
640 auto rv = downstream->push_upload_data_chunk(rb->pos(), rb->rleft());
649 if (downstream->request_buf_full()) {
661 if (downstream) {
663 switch (downstream->get_request_state()) {
696 // Get downstream again because it may be initialized in http parser
698 downstream = get_downstream();
703 if (downstream &&
704 downstream->get_request_state() == DownstreamState::MSG_COMPLETE &&
705 downstream->get_response_state() == DownstreamState::MSG_COMPLETE) {
718 if (downstream &&
719 downstream->get_response_state() != DownstreamState::INITIAL) {
729 } else if (downstream) {
730 status_code = downstream->response().http_status;
732 if (downstream->get_request_state() == DownstreamState::CONNECT_FAIL) {
734 } else if (downstream->get_request_state() ==
752 // downstream can be NULL here.
753 if (downstream && downstream->request_buf_full()) {
767 auto downstream = get_downstream();
768 if (!downstream) {
772 auto output = downstream->get_response_buf();
773 const auto &resp = downstream->response();
781 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) {
782 if (downstream->can_detach_downstream_connection()) {
784 downstream->detach_downstream_connection();
787 downstream->pop_downstream_connection();
791 if (downstream->get_request_state() == DownstreamState::MSG_COMPLETE) {
816 return downstream->resume_read(SHRPX_NO_BUFFER, resp.unconsumed_body_length);
827 int HttpsUpstream::resume_read(IOCtrlReason reason, Downstream *downstream,
829 // downstream could be nullptr
830 if (downstream && downstream->request_buf_full()) {
847 auto downstream = dconn->get_downstream();
850 rv = downstream->on_read();
853 if (downstream->get_request_header_sent()) {
860 downstream->pop_downstream_connection();
868 if (downstream->get_response_state() == DownstreamState::MSG_RESET) {
872 if (downstream->get_response_state() == DownstreamState::MSG_BAD_HEADER) {
874 downstream->pop_downstream_connection();
878 if (downstream->can_detach_downstream_connection()) {
880 downstream->detach_downstream_connection();
904 auto downstream = dconn->get_downstream();
910 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) {
914 if (downstream->get_response_state() == DownstreamState::HEADER_COMPLETE) {
920 on_downstream_body_complete(downstream);
921 downstream->set_response_state(DownstreamState::MSG_COMPLETE);
922 downstream->pop_downstream_connection();
926 if (downstream->get_response_state() == DownstreamState::INITIAL) {
933 downstream->pop_downstream_connection();
947 auto downstream = dconn->get_downstream();
955 if (downstream->get_response_state() != DownstreamState::INITIAL) {
961 if (downstream->get_request_header_sent()) {
971 downstream->pop_downstream_connection();
977 int HttpsUpstream::send_reply(Downstream *downstream, const uint8_t *body,
979 const auto &req = downstream->request();
980 auto &resp = downstream->response();
981 auto &balloc = downstream->get_block_allocator();
1010 auto output = downstream->get_response_buf();
1045 downstream->response_sent_body_length += bodylen;
1046 downstream->set_response_state(DownstreamState::MSG_COMPLETE);
1052 auto downstream = get_downstream();
1054 if (!downstream) {
1057 downstream = get_downstream();
1060 auto &resp = downstream->response();
1061 auto &balloc = downstream->get_block_allocator();
1071 auto output = downstream->get_response_buf();
1091 downstream->response_sent_body_length += html.size();
1092 downstream->set_response_state(DownstreamState::MSG_COMPLETE);
1095 void HttpsUpstream::attach_downstream(std::unique_ptr<Downstream> downstream) {
1097 downstream_ = std::move(downstream);
1114 int HttpsUpstream::on_downstream_header_complete(Downstream *downstream) {
1116 if (downstream->get_non_final_response()) {
1117 DLOG(INFO, downstream) << "HTTP non-final response header";
1119 DLOG(INFO, downstream) << "HTTP response header completed";
1123 const auto &req = downstream->request();
1124 auto &resp = downstream->response();
1125 auto &balloc = downstream->get_block_allocator();
1126 auto dconn = downstream->get_downstream_connection();
1129 if (downstream->get_non_final_response() &&
1130 !downstream->supports_non_final_response()) {
1136 if (!downstream->get_non_final_response()) {
1142 if (dmruby_ctx->run_on_response_proc(downstream) != 0) {
1147 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) {
1155 if (mruby_ctx->run_on_response_proc(downstream) != 0) {
1160 if (downstream->get_response_state() == DownstreamState::MSG_COMPLETE) {
1168 auto buf = downstream->get_response_buf();
1174 if (req.connect_proto != ConnectProto::NONE && downstream->get_upgraded()) {
1189 downstream->rewrite_location_response_header(
1193 if (downstream->get_non_final_response()) {
1224 // We check downstream->get_response_connection_close() in case when
1231 } else if (!downstream->get_upgraded()) {
1235 if (!connect_method && downstream->get_upgraded()) {
1290 if (req.method != HTTP_CONNECT || !downstream->get_upgraded()) {
1291 auto affinity_cookie = downstream->get_affinity_cookie_to_send();
1342 int HttpsUpstream::on_downstream_body(Downstream *downstream,
1348 auto output = downstream->get_response_buf();
1349 if (downstream->get_chunked_response()) {
1355 downstream->response_sent_body_length += len;
1357 if (downstream->get_chunked_response()) {
1363 int HttpsUpstream::on_downstream_body_complete(Downstream *downstream) {
1364 const auto &req = downstream->request();
1365 auto &resp = downstream->response();
1367 if (downstream->get_chunked_response()) {
1368 auto output = downstream->get_response_buf();
1380 DLOG(INFO, downstream) << "HTTP response completed";
1383 if (!downstream->validate_response_recv_body_length()) {
1389 downstream->get_request_state() != DownstreamState::MSG_COMPLETE) {
1396 int HttpsUpstream::on_downstream_abort_request(Downstream *downstream,
1404 Downstream *downstream) {
1405 redirect_to_https(downstream);
1410 int HttpsUpstream::redirect_to_https(Downstream *downstream) {
1411 auto &req = downstream->request();
1424 auto &balloc = downstream->get_block_allocator();
1438 auto &resp = downstream->response();
1446 return send_reply(downstream, nullptr, 0);
1466 int HttpsUpstream::on_downstream_reset(Downstream *downstream, bool no_retry) {
1470 assert(downstream == downstream_.get());
1520 rv = on_downstream_abort_request_with_https_redirect(downstream);
1532 int HttpsUpstream::initiate_push(Downstream *downstream, const StringRef &uri) {
1567 HttpsUpstream::on_downstream_push_promise(Downstream *downstream,
1573 Downstream *downstream, Downstream *promised_downstream) {