]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: use standard time formatting methods
authorTom Thorogood <me+google@tomthorogood.co.uk>
Sun, 9 Feb 2025 02:12:25 +0000 (12:42 +1030)
committerGopher Robot <gobot@golang.org>
Mon, 10 Feb 2025 20:28:00 +0000 (12:28 -0800)
time.Time has had an AppendFormat method since go1.5 so there's no
need to carry around a custom implementation.

Change-Id: I8e7e5a9ac34e8bf251f5d70555405777ce4e22a8
Reviewed-on: https://go-review.googlesource.com/c/go/+/647955
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>

src/net/http/export_test.go
src/net/http/serve_test.go
src/net/http/server.go

index 56ebda180bb08516602a22466f3945cf37c807ec..f2aa663a990d5f2af83508dbecf816f42bfbd0b3 100644 (file)
@@ -21,7 +21,6 @@ import (
 var (
        DefaultUserAgent                  = defaultUserAgent
        NewLoggingConn                    = newLoggingConn
-       ExportAppendTime                  = appendTime
        ExportRefererForURL               = refererForURL
        ExportServerNewConn               = (*Server).newConn
        ExportCloseWriteAndWait           = (*conn).closeWriteAndWait
index 0c46b1ecc3e0b186e0a31685e37d2ddc6b382ce4..e551732016e81e6b4197288de85105123fc9026e 100644 (file)
@@ -4302,19 +4302,6 @@ func TestResponseWriterWriteString(t *testing.T) {
        }
 }
 
-func TestAppendTime(t *testing.T) {
-       var b [len(TimeFormat)]byte
-       t1 := time.Date(2013, 9, 21, 15, 41, 0, 0, time.FixedZone("CEST", 2*60*60))
-       res := ExportAppendTime(b[:0], t1)
-       t2, err := ParseTime(string(res))
-       if err != nil {
-               t.Fatalf("Error parsing time: %s", err)
-       }
-       if !t1.Equal(t2) {
-               t.Fatalf("Times differ; expected: %v, got %v (%s)", t1, t2, string(res))
-       }
-}
-
 func TestServerConnState(t *testing.T) { run(t, testServerConnState, []testMode{http1Mode}) }
 func testServerConnState(t *testing.T, mode testMode) {
        handler := map[string]func(w ResponseWriter, r *Request){
index cbdc9dd0e3af60e6ed452f57336ec9381b11c801..439efa0c7530681b68149eaaf6d7ba40ad5c438f 100644 (file)
@@ -991,28 +991,6 @@ func (ecr *expectContinueReader) Close() error {
 // For parsing this time format, see [ParseTime].
 const TimeFormat = "Mon, 02 Jan 2006 15:04:05 GMT"
 
-// appendTime is a non-allocating version of []byte(t.UTC().Format(TimeFormat))
-func appendTime(b []byte, t time.Time) []byte {
-       const days = "SunMonTueWedThuFriSat"
-       const months = "JanFebMarAprMayJunJulAugSepOctNovDec"
-
-       t = t.UTC()
-       yy, mm, dd := t.Date()
-       hh, mn, ss := t.Clock()
-       day := days[3*t.Weekday():]
-       mon := months[3*(mm-1):]
-
-       return append(b,
-               day[0], day[1], day[2], ',', ' ',
-               byte('0'+dd/10), byte('0'+dd%10), ' ',
-               mon[0], mon[1], mon[2], ' ',
-               byte('0'+yy/1000), byte('0'+(yy/100)%10), byte('0'+(yy/10)%10), byte('0'+yy%10), ' ',
-               byte('0'+hh/10), byte('0'+hh%10), ':',
-               byte('0'+mn/10), byte('0'+mn%10), ':',
-               byte('0'+ss/10), byte('0'+ss%10), ' ',
-               'G', 'M', 'T')
-}
-
 var errTooLarge = errors.New("http: request too large")
 
 // Read next request from connection.
@@ -1506,7 +1484,7 @@ func (cw *chunkWriter) writeHeader(p []byte) {
        }
 
        if !header.has("Date") {
-               setHeader.date = appendTime(cw.res.dateBuf[:0], time.Now())
+               setHeader.date = time.Now().UTC().AppendFormat(cw.res.dateBuf[:0], TimeFormat)
        }
 
        if hasCL && hasTE && te != "identity" {