Lines Matching refs:downstream
63 auto downstream = dconn->get_downstream();
64 auto upstream = downstream->get_upstream();
66 auto &resp = downstream->response();
78 void retry_downstream_connection(Downstream *downstream,
80 auto upstream = downstream->get_upstream();
83 assert(!downstream->get_request_header_sent());
85 downstream->add_retry();
87 if (downstream->no_more_retry()) {
92 downstream->pop_downstream_connection();
93 auto buf = downstream->get_request_buf();
99 auto ndconn = handler->get_downstream_connection(rv, downstream);
103 if (downstream->attach_downstream_connection(std::move(ndconn)) != 0) {
106 if (downstream->push_request_headers() == 0) {
111 downstream->set_request_state(DownstreamState::CONNECT_FAIL);
114 rv = upstream->on_downstream_abort_request_with_https_redirect(downstream);
116 rv = upstream->on_downstream_abort_request(downstream, status_code);
137 auto downstream = dconn->get_downstream();
139 retry_downstream_connection(downstream, 504);
144 void backend_retry(Downstream *downstream) {
145 retry_downstream_connection(downstream, 502);
154 auto downstream = dconn->get_downstream();
155 auto upstream = downstream->get_upstream();
161 backend_retry(downstream);
175 auto downstream = dconn->get_downstream();
176 auto upstream = downstream->get_upstream();
181 backend_retry(downstream);
195 auto downstream = dconn->get_downstream();
197 backend_retry(downstream);
237 int HttpDownstreamConnection::attach_downstream(Downstream *downstream) {
241 DCLOG(INFO, this) << "Attaching to DOWNSTREAM:" << downstream;
244 downstream_ = downstream;
340 auto downstream = this->downstream_;
341 backend_retry(downstream);
408 DCLOG(INFO, this) << "Connecting to downstream server";
864 void HttpDownstreamConnection::detach_downstream(Downstream *downstream) {
866 DCLOG(INFO, this) << "Detaching from DOWNSTREAM:" << downstream;
909 auto downstream = static_cast<Downstream *>(htp->data);
911 if (downstream->get_response_state() != DownstreamState::INITIAL) {
921 auto downstream = static_cast<Downstream *>(htp->data);
922 auto upstream = downstream->get_upstream();
924 const auto &req = downstream->request();
925 auto &resp = downstream->response();
928 auto &balloc = downstream->get_block_allocator();
952 auto dconn = downstream->get_downstream_connection();
954 downstream->set_downstream_addr_group(dconn->get_downstream_addr_group());
955 downstream->set_addr(dconn->get_addr());
984 downstream->set_response_state(DownstreamState::MSG_BAD_HEADER);
990 downstream->check_upgrade_fulfilled_http1();
992 if (downstream->get_non_final_response()) {
999 rv = upstream->on_downstream_header_complete(downstream);
1010 downstream->set_response_state(DownstreamState::HEADER_COMPLETE);
1011 downstream->inspect_http1_response();
1014 downstream->set_chunked_response(true);
1018 if (transfer_encoding && !downstream->get_chunked_response()) {
1022 if (downstream->get_upgraded()) {
1027 downstream->set_chunked_response(false);
1032 downstream->set_chunked_response(false);
1033 } else if (!downstream->expect_response_body()) {
1034 downstream->set_chunked_response(false);
1037 if (loggingconf.access.write_early && downstream->accesslog_ready()) {
1038 handler->write_accesslog(downstream);
1039 downstream->set_accesslog_written(true);
1042 if (upstream->on_downstream_header_complete(downstream) != 0) {
1046 if (downstream->get_upgraded()) {
1048 if (upstream->resume_read(SHRPX_NO_BUFFER, downstream, 0) != 0) {
1051 downstream->set_request_state(DownstreamState::HEADER_COMPLETE);
1054 << downstream->get_stream_id();
1071 int ensure_header_field_buffer(const Downstream *downstream,
1073 auto &resp = downstream->response();
1077 DLOG(INFO, downstream) << "Too large header header field size="
1088 int ensure_max_header_fields(const Downstream *downstream,
1090 auto &resp = downstream->response();
1094 DLOG(INFO, downstream)
1106 auto downstream = static_cast<Downstream *>(htp->data);
1107 auto &resp = downstream->response();
1110 if (ensure_header_field_buffer(downstream, httpconf, len) != 0) {
1114 if (downstream->get_response_state() == DownstreamState::INITIAL) {
1118 if (ensure_max_header_fields(downstream, httpconf) != 0) {
1128 if (ensure_max_header_fields(downstream, httpconf) != 0) {
1143 auto downstream = static_cast<Downstream *>(htp->data);
1144 auto &resp = downstream->response();
1147 if (ensure_header_field_buffer(downstream, httpconf, len) != 0) {
1151 if (downstream->get_response_state() == DownstreamState::INITIAL) {
1162 auto downstream = static_cast<Downstream *>(htp->data);
1163 auto &resp = downstream->response();
1167 return downstream->get_upstream()->on_downstream_body(
1168 downstream, reinterpret_cast<const uint8_t *>(data), len, true);
1174 auto downstream = static_cast<Downstream *>(htp->data);
1175 auto &resp = downstream->response();
1176 auto &balloc = downstream->get_block_allocator();
1186 if (downstream->get_upgraded()) {
1190 if (downstream->get_non_final_response()) {
1191 downstream->reset_response();
1196 downstream->set_response_state(DownstreamState::MSG_COMPLETE);
1200 downstream->pause_read(SHRPX_MSG_BLOCK);
1201 return downstream->get_upstream()->on_downstream_body_complete(downstream);
1557 DCLOG(INFO, this) << "Connected to downstream host";