hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 93572e53181b5a614c2874bd00b7a38a02de58d3
parent 94f149b21e0c1d018e72cbea9e7d570785a512e9
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Thu,  2 Dec 2021 14:13:24 +0100

resources: Add timeout to the HTTP request in Get

Workaround for https://github.com/golang/go/issues/49366

Diffstat:
M.gitignore | 1+
Mcache/filecache/filecache_test.go | 2+-
Mresources/resource_factories/create/create.go | 9+++++++++
Mtpl/data/resources_test.go | 3+--
4 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,6 +1,7 @@
 /hugo
 docs/public*
 /.idea
+.vscode/*
 hugo.exe
 *.test
 *.prof
diff --git a/cache/filecache/filecache_test.go b/cache/filecache/filecache_test.go
@@ -276,7 +276,7 @@ func TestFileCacheReadOrCreateErrorInRead(t *testing.T) {
 		}
 	}
 
-	cache := NewCache(afero.NewMemMapFs(), 100*time.Hour, "")
+	cache := NewCache(afero.NewMemMapFs(), 100*time.Hour, 0, "")
 
 	const id = "a32"
 
diff --git a/resources/resource_factories/create/create.go b/resources/resource_factories/create/create.go
@@ -18,6 +18,7 @@ package create
 import (
 	"bufio"
 	"bytes"
+	"context"
 	"fmt"
 	"io"
 	"io/ioutil"
@@ -180,6 +181,14 @@ func (c *Client) FromRemote(uri string, options map[string]interface{}) (resourc
 			}
 			addUserProvidedHeaders(headers, req)
 		}
+
+		// Workaround for https://github.com/golang/go/issues/49366
+		// This is the entire lifetime of the request.
+		ctx, cancel := context.WithTimeout(req.Context(), 30*time.Second)
+		defer cancel()
+
+		req = req.WithContext(ctx)
+
 		res, err := c.httpClient.Do(req)
 		if err != nil {
 			return nil, err
diff --git a/tpl/data/resources_test.go b/tpl/data/resources_test.go
@@ -34,7 +34,6 @@ import (
 	"github.com/gohugoio/hugo/hugofs"
 	"github.com/gohugoio/hugo/langs"
 	"github.com/spf13/afero"
-	
 )
 
 func TestScpGetLocal(t *testing.T) {
@@ -87,7 +86,7 @@ func TestScpGetRemote(t *testing.T) {
 	t.Parallel()
 	c := qt.New(t)
 	fs := new(afero.MemMapFs)
-	cache := filecache.NewCache(fs, 100, "")
+	cache := filecache.NewCache(fs, 100, 0, "")
 
 	tests := []struct {
 		path    string