Bladeren bron

http2: fix bug where '*' as a valid :path value in Transport

In the most recent commit (git 3a1f9e, CL 27632) I introduced a bug
where I improperly started rejecting an outgoing :path of '*'.  That
CL was never vendored into std. Once I tried to vendor it and run the
tests, the tests failed due to this regression.

So, fix the bug and allow '*' (e.g. for OPTIONS requests). No test
updates because the tests are already in std, and now pass (again).

Change-Id: Ibb91a17145d381da0fd0ea193e8a1bd59f03c3fa
Reviewed-on: https://go-review.googlesource.com/29070
Reviewed-by: Chris Broadfoot <cbro@golang.org>
Brad Fitzpatrick 9 jaren geleden
bovenliggende
commit
324491d706
1 gewijzigde bestanden met toevoegingen van 6 en 3 verwijderingen
  1. 6 3
      http2/http2.go

+ 6 - 3
http2/http2.go

@@ -352,11 +352,14 @@ func (s *sorter) SortStrings(ss []string) {
 }
 
 // validPseudoPath reports whether v is a valid :path pseudo-header
-// value. It must be a non-empty string starting with '/', and not
-// start with two slashes.
+// value. It must be either:
+//
+//     *) a non-empty string starting with '/', but not with with "//",
+//     *) the string '*', for OPTIONS requests.
+//
 // For now this is only used a quick check for deciding when to clean
 // up Opaque URLs before sending requests from the Transport.
 // See golang.org/issue/16847
 func validPseudoPath(v string) bool {
-	return len(v) > 0 && v[0] == '/' && (len(v) == 1 || v[1] != '/')
+	return (len(v) > 0 && v[0] == '/' && (len(v) == 1 || v[1] != '/')) || v == "*"
 }