diff --git a/docs/toml.md b/docs/toml.md index cc40ca0c7..d71a91ac4 100644 --- a/docs/toml.md +++ b/docs/toml.md @@ -511,7 +511,7 @@ address = ":8080" # To enable digest auth on the webui # with 2 user/realm/pass: test:traefik:test and test2:traefik:test2 # You can use htdigest to generate those ones -# [web.auth.basic] +# [web.auth.digest] # users = ["test:traefik:a2688e031edb4be6a3797f3882655c05 ", "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"] ``` diff --git a/provider/k8s/client.go b/provider/k8s/client.go index dd4765acb..f68e54c90 100644 --- a/provider/k8s/client.go +++ b/provider/k8s/client.go @@ -7,6 +7,7 @@ import ( "encoding/json" "fmt" "github.com/containous/traefik/log" + "github.com/containous/traefik/safe" "github.com/parnurzeal/gorequest" "net/http" "net/url" @@ -160,7 +161,7 @@ func (c *clientImpl) WatchAll(labelSelector string, stopCh <-chan bool) (chan in if err != nil { return watchCh, errCh, fmt.Errorf("failed to create watch: %v", err) } - go func() { + safe.Go(func() { defer close(watchCh) defer close(errCh) defer close(stopIngresses) @@ -188,7 +189,7 @@ func (c *clientImpl) WatchAll(labelSelector string, stopCh <-chan bool) (chan in watchCh <- event } } - }() + }) return watchCh, errCh, nil } @@ -268,11 +269,16 @@ func (c *clientImpl) watch(url string, labelSelector string, stopCh <-chan bool) return watchCh, errCh, fmt.Errorf("failed to do watch request: GET %q: %v", url, err) } - go func() { + safe.Go(func() { + EndCh := make(chan bool, 1) defer close(watchCh) defer close(errCh) - go func() { + defer close(EndCh) + safe.Go(func() { defer res.Body.Close() + defer func() { + EndCh <- true + }() for { var eventList interface{} if err := json.NewDecoder(res.Body).Decode(&eventList); err != nil { @@ -283,11 +289,12 @@ func (c *clientImpl) watch(url string, labelSelector string, stopCh <-chan bool) } watchCh <- eventList } - }() + }) <-stopCh - go func() { + safe.Go(func() { cancel() // cancel watch request - }() - }() + }) + <-EndCh + }) return watchCh, errCh, nil } diff --git a/traefik.sample.toml b/traefik.sample.toml index c53effd28..78b5a2678 100644 --- a/traefik.sample.toml +++ b/traefik.sample.toml @@ -294,7 +294,7 @@ # To enable digest auth on the webui # with 2 user/realm/pass: test:traefik:test and test2:traefik:test2 # You can use htdigest to generate those ones -# [web.auth.basic] +# [web.auth.digest] # users = ["test:traefik:a2688e031edb4be6a3797f3882655c05 ", "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"]