--- a/hgweb/cache.go Wed Apr 15 00:48:00 2020 -0500
+++ b/hgweb/cache.go Wed Apr 15 00:53:36 2020 -0500
@@ -62,7 +62,7 @@
// who will validate the etag if specified, or just do the work.
// create our response writer which caches the data
- rw := newResponseWriter(w)
+ rw := newCachingResponseWriter(w) // send the request to mercurial
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hgweb/cachingresponsewriter.go Wed Apr 15 00:53:36 2020 -0500
@@ -0,0 +1,68 @@
+type cachingResponseWriter struct { + cachedBody *bytes.Buffer +var _ http.ResponseWriter = (*cachingResponseWriter)(nil) +func newCachingResponseWriter(w http.ResponseWriter) *cachingResponseWriter { + rw := &cachingResponseWriter{ + cachedBody: &bytes.Buffer{}, + rw.multiWriter = io.MultiWriter(w, rw.cachedBody) +func (w *cachingResponseWriter) Header() http.Header { +func (w *cachingResponseWriter) Write(data []byte) (int, error) { + w.statusCode = http.StatusOK + l, err := w.multiWriter.Write(data) +func (w *cachingResponseWriter) WriteHeader(statusCode int) { + w.statusCode = statusCode + w.w.WriteHeader(w.statusCode) +func (w *cachingResponseWriter) StatusCode() int { +func (w *cachingResponseWriter) Written() int64 { +func (w *cachingResponseWriter) Body() []byte { + return w.cachedBody.Bytes() --- a/hgweb/responsewriter.go Wed Apr 15 00:48:00 2020 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-type responseWriter struct {
- cachedBody *bytes.Buffer
-var _ http.ResponseWriter = (*responseWriter)(nil)
-func newResponseWriter(w http.ResponseWriter) *responseWriter {
- cachedBody: &bytes.Buffer{},
- rw.multiWriter = io.MultiWriter(w, rw.cachedBody)
-func (w *responseWriter) Header() http.Header {
-func (w *responseWriter) Write(data []byte) (int, error) {
- w.statusCode = http.StatusOK
- l, err := w.multiWriter.Write(data)
-func (w *responseWriter) WriteHeader(statusCode int) {
- w.statusCode = statusCode
- w.w.WriteHeader(w.statusCode)
-func (w *responseWriter) StatusCode() int {
-func (w *responseWriter) Written() int64 {
-func (w *responseWriter) Body() []byte {
- return w.cachedBody.Bytes()