Skip to content

Commit 15967de

Browse files
authored
gzhttp: Canonicalize ETag header (#1139)
This ensures the fast-path is hit in the net/http header functions for a minor speed improvement.
1 parent c5e0077 commit 15967de

2 files changed

Lines changed: 10 additions & 10 deletions

File tree

gzhttp/compress.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ const (
6464
acceptRanges = "Accept-Ranges"
6565
contentType = "Content-Type"
6666
contentLength = "Content-Length"
67-
eTag = "ETag"
67+
eTag = "Etag"
6868
)
6969

7070
type codings map[string]float64

gzhttp/compress_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ func TestGzipHandlerSuffixETag(t *testing.T) {
230230

231231
handlerWithETag := wrapper(
232232
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
233-
w.Header().Set("ETag", `W/"1234"`)
233+
w.Header().Set("Etag", `W/"1234"`)
234234
w.WriteHeader(http.StatusOK)
235235
w.Write([]byte(testBody))
236236
}))
@@ -251,7 +251,7 @@ func TestGzipHandlerSuffixETag(t *testing.T) {
251251
resWithEtag := respWithEtag.Result()
252252
assertEqual(t, 200, resWithEtag.StatusCode)
253253
assertEqual(t, "gzip", resWithEtag.Header.Get("Content-Encoding"))
254-
assertEqual(t, `W/"1234-gzip"`, resWithEtag.Header.Get("ETag"))
254+
assertEqual(t, `W/"1234-gzip"`, resWithEtag.Header.Get("Etag"))
255255
zr, err := gzip.NewReader(resWithEtag.Body)
256256
assertNil(t, err)
257257
got, err := io.ReadAll(zr)
@@ -261,7 +261,7 @@ func TestGzipHandlerSuffixETag(t *testing.T) {
261261
resWithoutEtag := respWithoutEtag.Result()
262262
assertEqual(t, 200, resWithoutEtag.StatusCode)
263263
assertEqual(t, "gzip", resWithoutEtag.Header.Get("Content-Encoding"))
264-
assertEqual(t, "", resWithoutEtag.Header.Get("ETag"))
264+
assertEqual(t, "", resWithoutEtag.Header.Get("Etag"))
265265
zr, err = gzip.NewReader(resWithoutEtag.Body)
266266
assertNil(t, err)
267267
got, err = io.ReadAll(zr)
@@ -275,13 +275,13 @@ func TestGzipHandlerDropETag(t *testing.T) {
275275

276276
handlerCompressed := wrapper(
277277
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
278-
w.Header().Set("ETag", `W/"1234"`)
278+
w.Header().Set("Etag", `W/"1234"`)
279279
w.WriteHeader(http.StatusOK)
280280
w.Write([]byte(testBody))
281281
}))
282282
handlerUncompressed := wrapper(
283283
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
284-
w.Header().Set("ETag", `W/"1234"`)
284+
w.Header().Set("Etag", `W/"1234"`)
285285
w.Header().Set(HeaderNoCompression, "true")
286286
w.WriteHeader(http.StatusOK)
287287
w.Write([]byte(testBody))
@@ -298,7 +298,7 @@ func TestGzipHandlerDropETag(t *testing.T) {
298298
resCompressed := respCompressed.Result()
299299
assertEqual(t, 200, resCompressed.StatusCode)
300300
assertEqual(t, "gzip", resCompressed.Header.Get("Content-Encoding"))
301-
assertEqual(t, "", resCompressed.Header.Get("ETag"))
301+
assertEqual(t, "", resCompressed.Header.Get("Etag"))
302302
zr, err := gzip.NewReader(resCompressed.Body)
303303
assertNil(t, err)
304304
got, err := io.ReadAll(zr)
@@ -308,7 +308,7 @@ func TestGzipHandlerDropETag(t *testing.T) {
308308
resUncompressed := respUncompressed.Result()
309309
assertEqual(t, 200, resUncompressed.StatusCode)
310310
assertEqual(t, "", resUncompressed.Header.Get("Content-Encoding"))
311-
assertEqual(t, `W/"1234"`, resUncompressed.Header.Get("ETag"))
311+
assertEqual(t, `W/"1234"`, resUncompressed.Header.Get("Etag"))
312312
got, err = io.ReadAll(resUncompressed.Body)
313313
assertNil(t, err)
314314
assertEqual(t, testBody, got)
@@ -333,7 +333,7 @@ func TestSuffixETagEncodingSpecific(t *testing.T) {
333333
assertNil(t, err)
334334

335335
handler := wrapper(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
336-
w.Header().Set("ETag", `W/"1234"`)
336+
w.Header().Set("Etag", `W/"1234"`)
337337
w.Write(testBody)
338338
}))
339339

@@ -343,7 +343,7 @@ func TestSuffixETagEncodingSpecific(t *testing.T) {
343343
handler.ServeHTTP(resp, req)
344344

345345
res := resp.Result()
346-
assertEqual(t, tt.wantETag, res.Header.Get("ETag"))
346+
assertEqual(t, tt.wantETag, res.Header.Get("Etag"))
347347
})
348348
}
349349
}

0 commit comments

Comments
 (0)