diff --git a/httpcache.go b/httpcache.go index fa6d9b9..1e560cc 100644 --- a/httpcache.go +++ b/httpcache.go @@ -242,7 +242,11 @@ func (t *Transport) RoundTrip(req *http.Request) (resp *http.Response, err error if t.EnableETagPair { if etag := resp.Header.Get("etag"); etag != "" { resp.Header.Set(XETag1, etag) - resp.Header.Set(XETag2, cachedXEtag) + etag2 := cachedXEtag + if etag2 == "" { + etag2 = etag + } + resp.Header.Set(XETag2, etag2) } else { etagHash = md5.New() r = struct { @@ -261,8 +265,11 @@ func (t *Transport) RoundTrip(req *http.Request) (resp *http.Response, err error if etagHash != nil { md5Str := hex.EncodeToString(etagHash.Sum(nil)) resp.Header.Set(XETag1, md5Str) - resp.Header.Set(XETag2, cachedXEtag) - + etag2 := cachedXEtag + if etag2 == "" { + etag2 = md5Str + } + resp.Header.Set(XETag2, etag2) } resp := *resp resp.Body = io.NopCloser(r) diff --git a/httpcache_test.go b/httpcache_test.go index 5d528e3..491dccc 100644 --- a/httpcache_test.go +++ b/httpcache_test.go @@ -224,7 +224,7 @@ func TestEnableETagPair(t *testing.T) { _, resp := doMethod(t, "GET", "/etag", nil) c.Assert(resp.StatusCode, qt.Equals, http.StatusOK) c.Assert(resp.Header.Get(XETag1), qt.Equals, "124567") - c.Assert(resp.Header.Get(XETag2), qt.Equals, "") + c.Assert(resp.Header.Get(XETag2), qt.Equals, "124567") } { _, resp := doMethod(t, "GET", "/etag", nil) @@ -238,7 +238,7 @@ func TestEnableETagPair(t *testing.T) { _, resp := doMethod(t, "GET", "/helloheaderasbody", map[string]string{"Hello": "world1"}) c.Assert(resp.StatusCode, qt.Equals, http.StatusOK) c.Assert(resp.Header.Get(XETag1), qt.Equals, "48b21a691481958c34cc165011bdb9bc") - c.Assert(resp.Header.Get(XETag2), qt.Equals, "") + c.Assert(resp.Header.Get(XETag2), qt.Equals, "48b21a691481958c34cc165011bdb9bc") } { _, resp := doMethod(t, "GET", "/helloheaderasbody", map[string]string{"Hello": "world2"})