hugo

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

git clone git://git.shimmy1996.com/hugo.git
commit a2a660ed1209528b075a21af84fc0ed3e7b266ef
parent f7bc4cc505950df738ab11aa3c611f324dd6c158
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Thu, 10 Feb 2022 17:12:02 +0100

commands: Fix server deadlock on config error

Fixes #9486

Diffstat:
Mcommands/commandeer.go | 6++++++
Mcommands/hugo.go | 2+-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/commands/commandeer.go b/commands/commandeer.go
@@ -61,6 +61,8 @@ type commandeer struct {
 	logger       loggers.Logger
 	serverConfig *config.Server
 
+	buildLock func() (unlock func(), err error)
+
 	// Loading state
 	mustHaveConfigFile bool
 	failOnInitErr      bool
@@ -419,6 +421,10 @@ func (c *commandeer) loadConfig() error {
 			err = createErr
 		}
 		c.hugoSites = h
+		// TODO(bep) improve.
+		if c.buildLock == nil {
+			c.buildLock = h.LockBuild
+		}
 		close(c.created)
 	})
 
diff --git a/commands/hugo.go b/commands/hugo.go
@@ -869,7 +869,7 @@ func (c *commandeer) newWatcher(pollIntervalStr string, dirList ...string) (*wat
 		for {
 			select {
 			case evs := <-watcher.Events:
-				unlock, err := c.hugo().BaseFs.LockBuild()
+				unlock, err := c.buildLock()
 				if err != nil {
 					c.logger.Errorln("Failed to acquire a build lock: %s", err)
 					return