Commit e436caf0 authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

nghttpx: Don't forward request if response was commited in mruby hook

parent f0d41a5a
......@@ -307,6 +307,8 @@ int Http2Upstream::on_request_headers(Downstream *downstream,
downstream->set_request_http2_expect_body(true);
}
downstream->inspect_http2_request();
auto upstream = downstream->get_upstream();
auto handler = upstream->get_client_handler();
auto worker = handler->get_worker();
......@@ -314,8 +316,6 @@ int Http2Upstream::on_request_headers(Downstream *downstream,
mruby_ctx->run_on_request_proc(downstream);
downstream->inspect_http2_request();
downstream->set_request_state(Downstream::HEADER_COMPLETE);
if (frame->hd.flags & NGHTTP2_FLAG_END_STREAM) {
downstream->disable_upstream_rtimer();
......@@ -323,6 +323,10 @@ int Http2Upstream::on_request_headers(Downstream *downstream,
downstream->set_request_state(Downstream::MSG_COMPLETE);
}
if (downstream->get_response_state() == Downstream::MSG_COMPLETE) {
return 0;
}
start_downstream(downstream);
return 0;
......
......@@ -277,8 +277,6 @@ int htp_hdrs_completecb(http_parser *htp) {
auto worker = handler->get_worker();
auto mruby_ctx = worker->get_mruby_context();
mruby_ctx->run_on_request_proc(downstream);
downstream->inspect_http1_request();
if (downstream->get_request_method() != HTTP_CONNECT) {
......@@ -312,6 +310,14 @@ int htp_hdrs_completecb(http_parser *htp) {
}
}
mruby_ctx->run_on_request_proc(downstream);
downstream->set_request_state(Downstream::HEADER_COMPLETE);
if (downstream->get_response_state() == Downstream::MSG_COMPLETE) {
return 0;
}
rv = downstream->attach_downstream_connection(
upstream->get_client_handler()->get_downstream_connection(downstream));
......@@ -327,8 +333,6 @@ int htp_hdrs_completecb(http_parser *htp) {
return -1;
}
downstream->set_request_state(Downstream::HEADER_COMPLETE);
return 0;
}
} // namespace
......
......@@ -30,6 +30,7 @@
#include "shrpx_downstream.h"
#include "shrpx_config.h"
#include "shrpx_mruby_module.h"
#include "shrpx_downstream_connection.h"
#include "template.h"
namespace shrpx {
......@@ -77,6 +78,10 @@ int run_request_proc(mrb_state *mrb, Downstream *downstream, RProc *proc) {
downstream->index_request_headers();
}
if (downstream->get_response_state() == Downstream::MSG_COMPLETE) {
downstream->pop_downstream_connection();
}
return rv;
}
} // namespace
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment