rproxy test: send the body over its limit without Connection: close (closes #371)
check / check (push) Waiting to run
check / check (push) Waiting to run
visit's client sends Connection: close, and Go's server then closes the connection after the 413 without reading the rest of the body. The visitor, still sending, could see the reset before the answer. The test now sends the request on its own connection without that header, so Go's server reads the rest before it closes. Model: opus-5-5
This commit was merged in pull request #372.
This commit is contained in:
1 parent
aaa9719f02
commit
c4bf76c966
1 file changed
+9
-4
@@ -93,10 +93,15 @@ func TestABodyAnnouncedOverItsLimitIsRefusedOnceWAFAllowsIt(t *testing.T) {
|
||||
},
|
||||
)
|
||||
|
||||
got := visit(t, newRequest(t, http.MethodPost, addr, "/",
|
||||
bytes.NewReader(make([]byte, tc.size))))
|
||||
if got.status != http.StatusRequestEntityTooLarge {
|
||||
t.Errorf("answered %+v, want 413", got)
|
||||
// The visitor sends no Connection: close, so Go's server reads the rest
|
||||
// of the body before it closes the connection. Closed with the rest
|
||||
// unread, the connection is reset while the visitor still sends.
|
||||
conn := dial(t, addr)
|
||||
send(t, conn, post+announcedLength(tc.size)+
|
||||
strings.Repeat("x", tc.size))
|
||||
|
||||
if status := readStatus(t, conn); status != http.StatusRequestEntityTooLarge {
|
||||
t.Errorf("status %d, want 413", status)
|
||||
}
|
||||
|
||||
if asked := standIn.question(t); len(asked.body) != tc.asked {
|
||||
|
||||
Reference in new issue
Block a user