forked from gitea/gitea
1
0
Fork 0

Fix bug in Wrap (#15302) (#15309)

Whilst doing other work I have noticed that there is an issue with Wrap when passing an
http.Handler - the next should be the next handler in line not empty.

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
6543 2021-04-06 18:44:24 +02:00 committed by GitHub
parent e6050e80f7
commit a8c6a4a70e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 3 deletions

View File

@ -68,10 +68,11 @@ func Wrap(handlers ...interface{}) http.HandlerFunc {
} }
case func(http.Handler) http.Handler: case func(http.Handler) http.Handler:
var next = http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}) var next = http.HandlerFunc(func(http.ResponseWriter, *http.Request) {})
t(next).ServeHTTP(resp, req) if len(handlers) > i+1 {
if r, ok := resp.(context.ResponseWriter); ok && r.Status() > 0 { next = Wrap(handlers[i+1:]...)
return
} }
t(next).ServeHTTP(resp, req)
return
default: default:
panic(fmt.Sprintf("Unsupported handler type: %#v", t)) panic(fmt.Sprintf("Unsupported handler type: %#v", t))
} }