fix: deep-copy trailer keys

This commit is contained in:
Erik Dubbelboer
2026-06-13 05:48:08 +02:00
parent 3aa09fee51
commit ca4600a0a3
2 changed files with 22 additions and 1 deletions
+1 -1
View File
@@ -3515,7 +3515,7 @@ func copyTrailer(dst, src [][]byte) [][]byte {
if cap(dst) >= len(src) { if cap(dst) >= len(src) {
dst = dst[:len(src)] dst = dst[:len(src)]
} else { } else {
dst = append(dst[:0], src...) dst = make([][]byte, len(src))
} }
for i := range dst { for i := range dst {
+21
View File
@@ -3724,6 +3724,27 @@ func TestRequestHeader_Keys(t *testing.T) {
} }
} }
func TestResponseHeaderCopyToCopiesTrailerKeys(t *testing.T) {
t.Parallel()
var src ResponseHeader
var dst ResponseHeader
if err := src.SetTrailer("X-Foo"); err != nil {
t.Fatalf("unexpected error: %v", err)
}
src.CopyTo(&dst)
if err := src.SetTrailer("Y-Bar"); err != nil {
t.Fatalf("unexpected error: %v", err)
}
got := dst.PeekTrailerKeys()
want := [][]byte{[]byte("X-Foo")}
if !reflect.DeepEqual(got, want) {
t.Fatalf("unexpected copied trailer keys %q. Expecting %q", got, want)
}
}
func TestResponseHeader_Keys(t *testing.T) { func TestResponseHeader_Keys(t *testing.T) {
h := &ResponseHeader{} h := &ResponseHeader{}
h.Add(HeaderConnection, "keep-alive") h.Add(HeaderConnection, "keep-alive")