nghttpx: Return 501 if invalid method is received on h1 frontend
This commit is contained in:
parent
c2ca04c1db
commit
f9c60d5e9d
|
@ -52,6 +52,27 @@ func TestH1H1PlainGETClose(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestH1H1InvalidMethod tests that server rejects invalid method with
|
||||||
|
// 501 status code
|
||||||
|
func TestH1H1InvalidMethod(t *testing.T) {
|
||||||
|
st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
t.Errorf("server should not forward this request")
|
||||||
|
})
|
||||||
|
defer st.Close()
|
||||||
|
|
||||||
|
res, err := st.http1(requestParam{
|
||||||
|
name: "TestH1H1InvalidMethod",
|
||||||
|
method: "get",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Error st.http1() = %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if got, want := res.status, 501; got != want {
|
||||||
|
t.Errorf("status = %v; want %v", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TestH1H1MultipleRequestCL tests that server rejects request which
|
// TestH1H1MultipleRequestCL tests that server rejects request which
|
||||||
// contains multiple Content-Length header fields.
|
// contains multiple Content-Length header fields.
|
||||||
func TestH1H1MultipleRequestCL(t *testing.T) {
|
func TestH1H1MultipleRequestCL(t *testing.T) {
|
||||||
|
|
|
@ -460,7 +460,9 @@ int HttpsUpstream::on_read() {
|
||||||
|
|
||||||
unsigned int status_code;
|
unsigned int status_code;
|
||||||
|
|
||||||
if (downstream) {
|
if (htperr == HPE_INVALID_METHOD) {
|
||||||
|
status_code = 501;
|
||||||
|
} else if (downstream) {
|
||||||
if (downstream->get_request_state() == Downstream::CONNECT_FAIL) {
|
if (downstream->get_request_state() == Downstream::CONNECT_FAIL) {
|
||||||
status_code = 503;
|
status_code = 503;
|
||||||
} else if (downstream->get_request_state() ==
|
} else if (downstream->get_request_state() ==
|
||||||
|
|
Loading…
Reference in New Issue