nghttpx: Response with 503 when re-submission to backend failed
This commit is contained in:
parent
6657966334
commit
50c4aa061f
|
@ -1420,10 +1420,7 @@ int Http2Upstream::on_downstream_reset(bool no_retry) {
|
|||
downstream->add_retry();
|
||||
|
||||
if (no_retry || downstream->no_more_retry()) {
|
||||
if (on_downstream_abort_request(downstream, 503) != 0) {
|
||||
return -1;
|
||||
}
|
||||
continue;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
// downstream connection is clean; we can retry with new
|
||||
|
@ -1432,10 +1429,16 @@ int Http2Upstream::on_downstream_reset(bool no_retry) {
|
|||
rv = downstream->attach_downstream_connection(
|
||||
handler_->get_downstream_connection());
|
||||
if (rv != 0) {
|
||||
rst_stream(downstream, NGHTTP2_INTERNAL_ERROR);
|
||||
downstream->pop_downstream_connection();
|
||||
continue;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
continue;
|
||||
|
||||
fail:
|
||||
if (on_downstream_abort_request(downstream, 503) != 0) {
|
||||
return -1;
|
||||
}
|
||||
downstream->pop_downstream_connection();
|
||||
}
|
||||
|
||||
handler_->signal_write();
|
||||
|
|
|
@ -854,17 +854,23 @@ int HttpsUpstream::on_downstream_reset(bool no_retry) {
|
|||
downstream_->add_retry();
|
||||
|
||||
if (no_retry || downstream_->no_more_retry()) {
|
||||
if (on_downstream_abort_request(downstream_.get(), 503) != 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
rv = downstream_->attach_downstream_connection(
|
||||
handler_->get_downstream_connection());
|
||||
if (rv != 0) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
if (on_downstream_abort_request(downstream_.get(), 503) != 0) {
|
||||
return -1;
|
||||
}
|
||||
downstream_->pop_downstream_connection();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1052,10 +1052,7 @@ int SpdyUpstream::on_downstream_reset(bool no_retry) {
|
|||
downstream->add_retry();
|
||||
|
||||
if (no_retry || downstream->no_more_retry()) {
|
||||
if (on_downstream_abort_request(downstream, 503) != 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
// downstream connection is clean; we can retry with new
|
||||
|
@ -1064,10 +1061,16 @@ int SpdyUpstream::on_downstream_reset(bool no_retry) {
|
|||
rv = downstream->attach_downstream_connection(
|
||||
handler_->get_downstream_connection());
|
||||
if (rv != 0) {
|
||||
rst_stream(downstream, SPDYLAY_INTERNAL_ERROR);
|
||||
downstream->pop_downstream_connection();
|
||||
continue;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
continue;
|
||||
|
||||
fail:
|
||||
if (on_downstream_abort_request(downstream, 503) != 0) {
|
||||
return -1;
|
||||
}
|
||||
downstream->pop_downstream_connection();
|
||||
}
|
||||
|
||||
handler_->signal_write();
|
||||
|
|
Loading…
Reference in New Issue