diff --git a/go.mod b/go.mod index 4fbeeb09e..3346066b1 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/shirou/gopsutil/v3 v3.21.4 github.com/syncthing/notify v0.0.0-20210308121556-f45149b04939 github.com/syndtr/goleveldb v1.0.1-0.20200815071216-d9e9293bd0f7 - github.com/thejerf/suture/v4 v4.0.0 + github.com/thejerf/suture/v4 v4.0.1 github.com/urfave/cli v1.22.5 github.com/vitrun/qart v0.0.0-20160531060029-bf64b92db6b0 golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b diff --git a/go.sum b/go.sum index d3e36d170..595a80b2d 100644 --- a/go.sum +++ b/go.sum @@ -453,6 +453,8 @@ github.com/syndtr/goleveldb v1.0.1-0.20200815071216-d9e9293bd0f7/go.mod h1:u2MKk github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/thejerf/suture/v4 v4.0.0 h1:GX3X+1Qaewtj9flL2wgoTBfLA5NcmrCY39TJRpPbUrI= github.com/thejerf/suture/v4 v4.0.0/go.mod h1:g0e8vwskm9tI0jRjxrnA6lSr0q6OfPdWJVX7G5bVWRs= +github.com/thejerf/suture/v4 v4.0.1 h1:CLnC1wxLAiHA5zTbbvhSWMupVuGe5ZJ7YddWE3lvb4M= +github.com/thejerf/suture/v4 v4.0.1/go.mod h1:g0e8vwskm9tI0jRjxrnA6lSr0q6OfPdWJVX7G5bVWRs= github.com/tklauser/go-sysconf v0.3.4/go.mod h1:Cl2c8ZRWfHD5IrfHo9VN+FX9kCFjIOyVklgXycLB6ek= github.com/tklauser/numcpus v0.2.1/go.mod h1:9aU+wOc6WjUIZEwWMP62PL/41d65P+iks1gBkr4QyP8= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= diff --git a/lib/syncthing/syncthing.go b/lib/syncthing/syncthing.go index 0ea45bd04..9034183c1 100644 --- a/lib/syncthing/syncthing.go +++ b/lib/syncthing/syncthing.go @@ -110,7 +110,8 @@ func (a *App) Start() error { a.stopped = make(chan struct{}) ctx, cancel := context.WithCancel(context.Background()) a.mainServiceCancel = cancel - go a.run(ctx) + errChan := a.mainService.ServeBackground(ctx) + go a.wait(errChan) if err := a.startup(); err != nil { a.stopWithErr(svcutil.ExitError, err) @@ -334,8 +335,8 @@ func (a *App) startup() error { return nil } -func (a *App) run(ctx context.Context) { - err := a.mainService.Serve(ctx) +func (a *App) wait(errChan <-chan error) { + err := <-errChan a.handleMainServiceError(err) done := make(chan struct{})