Merge ca5e7090c7d2ed03ec75c3f240c39de59788838d into 8ee9d959a0bcc132fae25ce61881c7effbe5c2f5

This commit is contained in:
Dmitry Kutakov 2019-05-16 03:04:01 +00:00 committed by GitHub
commit 6639eff344
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 2 deletions

View File

@ -79,7 +79,6 @@ func (c *Context) reset() {
// This has to be used when the context has to be passed to a goroutine. // This has to be used when the context has to be passed to a goroutine.
func (c *Context) Copy() *Context { func (c *Context) Copy() *Context {
var cp = *c var cp = *c
cp.writermem.ResponseWriter = nil
cp.Writer = &cp.writermem cp.Writer = &cp.writermem
cp.index = abortIndex cp.index = abortIndex
cp.handlers = nil cp.handlers = nil

View File

@ -324,7 +324,6 @@ func TestContextCopy(t *testing.T) {
cp := c.Copy() cp := c.Copy()
assert.Nil(t, cp.handlers) assert.Nil(t, cp.handlers)
assert.Nil(t, cp.writermem.ResponseWriter)
assert.Equal(t, &cp.writermem, cp.Writer.(*responseWriter)) assert.Equal(t, &cp.writermem, cp.Writer.(*responseWriter))
assert.Equal(t, cp.Request, c.Request) assert.Equal(t, cp.Request, c.Request)
assert.Equal(t, cp.index, abortIndex) assert.Equal(t, cp.index, abortIndex)
@ -1821,3 +1820,29 @@ func TestContextResetInHandler(t *testing.T) {
c.Next() c.Next()
}) })
} }
func TestContextStreamToCopyOfContext(t *testing.T) {
w := CreateTestResponseRecorder()
c, _ := CreateTestContext(w)
h := func(c *Context) {
nc := c.Copy()
nc.Stream(func(w io.Writer) bool {
w.Write([]byte("1"))
return false
})
c.String(http.StatusOK, "%s", "2")
w.closeClient()
nc.Stream(func(w io.Writer) bool {
w.Write([]byte("3"))
return false
})
}
assert.NotPanics(t, func() {
h(c)
})
assert.Equal(t, "12", w.Body.String())
}