nghttpx: Simplify HttpsUpstream::on_read
This commit is contained in:
parent
50c4aa061f
commit
f755ea3894
|
@ -224,12 +224,24 @@ int htp_msg_completecb(http_parser *htp) {
|
||||||
if (LOG_ENABLED(INFO)) {
|
if (LOG_ENABLED(INFO)) {
|
||||||
ULOG(INFO, upstream) << "HTTP request completed";
|
ULOG(INFO, upstream) << "HTTP request completed";
|
||||||
}
|
}
|
||||||
|
auto handler = upstream->get_client_handler();
|
||||||
auto downstream = upstream->get_downstream();
|
auto downstream = upstream->get_downstream();
|
||||||
downstream->set_request_state(Downstream::MSG_COMPLETE);
|
downstream->set_request_state(Downstream::MSG_COMPLETE);
|
||||||
rv = downstream->end_upload_data();
|
rv = downstream->end_upload_data();
|
||||||
if (rv != 0) {
|
if (rv != 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (handler->get_http2_upgrade_allowed() &&
|
||||||
|
downstream->get_http2_upgrade_request()) {
|
||||||
|
|
||||||
|
if (handler->perform_http2_upgrade(upstream) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
handler->signal_write();
|
||||||
|
}
|
||||||
|
|
||||||
// Stop further processing to complete this request
|
// Stop further processing to complete this request
|
||||||
http_parser_pause(htp, 1);
|
http_parser_pause(htp, 1);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -310,56 +322,25 @@ int HttpsUpstream::on_read() {
|
||||||
// execution
|
// execution
|
||||||
downstream = get_downstream();
|
downstream = get_downstream();
|
||||||
|
|
||||||
auto handler = get_client_handler();
|
|
||||||
auto htperr = HTTP_PARSER_ERRNO(&htp_);
|
auto htperr = HTTP_PARSER_ERRNO(&htp_);
|
||||||
|
|
||||||
if (htperr == HPE_PAUSED) {
|
if (htperr == HPE_PAUSED) {
|
||||||
|
|
||||||
assert(downstream);
|
|
||||||
|
|
||||||
if (downstream->get_request_state() == Downstream::CONNECT_FAIL) {
|
|
||||||
error_reply(503);
|
|
||||||
handler_->signal_write();
|
|
||||||
// Downstream gets deleted after response body is read.
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(downstream->get_request_state() == Downstream::MSG_COMPLETE);
|
|
||||||
|
|
||||||
if (downstream->get_downstream_connection() == nullptr) {
|
|
||||||
// Error response has already be sent
|
|
||||||
assert(downstream->get_response_state() == Downstream::MSG_COMPLETE);
|
|
||||||
delete_downstream();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (handler->get_http2_upgrade_allowed() &&
|
|
||||||
downstream->get_http2_upgrade_request()) {
|
|
||||||
|
|
||||||
if (handler->perform_http2_upgrade(this) != 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
handler_->signal_write();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (htperr != HPE_OK) {
|
if (htperr != HPE_OK) {
|
||||||
if (downstream->get_response_state() == Downstream::MSG_COMPLETE) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (LOG_ENABLED(INFO)) {
|
if (LOG_ENABLED(INFO)) {
|
||||||
ULOG(INFO, this) << "HTTP parse failure: "
|
ULOG(INFO, this) << "HTTP parse failure: "
|
||||||
<< "(" << http_errno_name(htperr) << ") "
|
<< "(" << http_errno_name(htperr) << ") "
|
||||||
<< http_errno_description(htperr);
|
<< http_errno_description(htperr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (downstream && downstream->get_response_state() != Downstream::INITIAL) {
|
||||||
|
handler_->set_should_close_after_write(true);
|
||||||
|
handler_->signal_write();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int status_code;
|
unsigned int status_code;
|
||||||
|
|
||||||
if (downstream &&
|
if (downstream &&
|
||||||
|
|
Loading…
Reference in New Issue