diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-13 15:10:02 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-13 15:10:02 +0300 |
commit | 3748ae5cbbefd3de0111951e71e74b676c276d61 (patch) | |
tree | ec12be349757c64eafaafdacd0eb7699adff113b /workhorse | |
parent | 19325d74c2a5e7f367c6d1d6a064650f90a5b3e7 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'workhorse')
-rw-r--r-- | workhorse/internal/api/api.go | 5 | ||||
-rw-r--r-- | workhorse/main_test.go | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/workhorse/internal/api/api.go b/workhorse/internal/api/api.go index c83523c882a..d8e2a7b0d9f 100644 --- a/workhorse/internal/api/api.go +++ b/workhorse/internal/api/api.go @@ -168,7 +168,10 @@ func singleJoiningSlash(a, b string) string { // joinURLPath is taken from reverseproxy.go:joinURLPath func joinURLPath(a *url.URL, b string) (path string, rawpath string) { - if a.RawPath == "" && b == "" { + // Avoid adding a trailing slash if the suffix is empty + if b == "" { + return a.Path, a.RawPath + } else if a.RawPath == "" { return singleJoiningSlash(a.Path, b), "" } diff --git a/workhorse/main_test.go b/workhorse/main_test.go index 4e169b5112f..5729d2412bc 100644 --- a/workhorse/main_test.go +++ b/workhorse/main_test.go @@ -536,7 +536,11 @@ func TestApiContentTypeBlock(t *testing.T) { func TestAPIFalsePositivesAreProxied(t *testing.T) { goodResponse := []byte(`<html></html>`) ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) { - if r.Header.Get(secret.RequestHeader) != "" && r.Method != "GET" { + url := r.URL.String() + if url[len(url)-1] == '/' { + w.WriteHeader(500) + w.Write([]byte("PreAuthorize request included a trailing slash")) + } else if r.Header.Get(secret.RequestHeader) != "" && r.Method != "GET" { w.WriteHeader(500) w.Write([]byte("non-GET request went through PreAuthorize handler")) } else { |