mirror of
https://github.com/golang/go
synced 2024-09-15 22:20:06 +00:00
websocket: fix bug involving spaces in header keys
R=rsc, ukai CC=golang-dev https://golang.org/cl/1669056
This commit is contained in:
parent
1c4d380b80
commit
6d37724c15
|
@ -123,14 +123,7 @@ func generateKeyNumber() (key string, number uint32) {
|
|||
// to U+0039 DIGIT NINE (9).
|
||||
key = fmt.Sprintf("%d", product)
|
||||
|
||||
// 21. Insert /spaces_n/ U+0020 SPACE characters into /key_n/ at random
|
||||
// posisions.
|
||||
for i := 0; i < spaces; i++ {
|
||||
pos := rand.Intn(len(key)-1) + 1
|
||||
key = key[0:pos] + " " + key[pos:]
|
||||
}
|
||||
|
||||
// 22. Insert between one and twelve random characters from the ranges
|
||||
// 21. Insert between one and twelve random characters from the ranges
|
||||
// U+0021 to U+002F and U+003A to U+007E into /key_n/ at random
|
||||
// positions.
|
||||
n := rand.Intn(12) + 1
|
||||
|
@ -139,6 +132,14 @@ func generateKeyNumber() (key string, number uint32) {
|
|||
ch := secKeyRandomChars[rand.Intn(len(secKeyRandomChars))]
|
||||
key = key[0:pos] + string(ch) + key[pos:]
|
||||
}
|
||||
|
||||
// 22. Insert /spaces_n/ U+0020 SPACE characters into /key_n/ at random
|
||||
// positions other than the start or end of the string.
|
||||
for i := 0; i < spaces; i++ {
|
||||
pos := rand.Intn(len(key)-1) + 1
|
||||
key = key[0:pos] + " " + key[pos:]
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -143,3 +143,18 @@ func TestHTTPDraft75(t *testing.T) {
|
|||
t.Errorf("Get: got status %d", r.StatusCode)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTrailingSpaces(t *testing.T) {
|
||||
// http://code.google.com/p/go/issues/detail?id=955
|
||||
// The last runs of this create keys with trailing spaces that should not be
|
||||
// generated by the client.
|
||||
once.Do(startServer)
|
||||
for i := 0; i < 30; i++ {
|
||||
// body
|
||||
_, err := Dial(fmt.Sprintf("ws://%s/echo", serverAddr), "",
|
||||
"http://localhost/")
|
||||
if err != nil {
|
||||
panic("Dial failed: " + err.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue