diff --git a/services/slack/service.go b/services/slack/service.go index bc78a3faa6..62ad432b04 100644 --- a/services/slack/service.go +++ b/services/slack/service.go @@ -18,6 +18,7 @@ import ( type Service struct { configValue atomic.Value + clientValue atomic.Value logger *log.Logger client *http.Client } @@ -32,10 +33,13 @@ func NewService(c Config, l *log.Logger) (*Service, error) { } s := &Service{ logger: l, - client: &http.Client{Transport: &http.Transport{TLSClientConfig: tlsConfig}}, } s.configValue.Store(c) - + s.clientValue.Store(&http.Client{ + Transport: &http.Transport{ + TLSClientConfig: tlsConfig, + }, + }) return s, nil } @@ -65,8 +69,12 @@ func (s *Service) Update(newConfig []interface{}) error { if tlsConfig.InsecureSkipVerify { s.logger.Println("W! Slack service is configured to skip ssl verification") } - s.client = &http.Client{Transport: &http.Transport{TLSClientConfig: tlsConfig}} s.configValue.Store(c) + s.clientValue.Store(&http.Client{ + Transport: &http.Transport{ + TLSClientConfig: tlsConfig, + }, + }) } return nil } @@ -120,7 +128,8 @@ func (s *Service) Alert(channel, message, username, iconEmoji string, level aler return err } s.logger.Println("D! Posting event to Slack", post) - resp, err := s.client.Post(url, "application/json", post) + client := s.clientValue.Load().(*http.Client) + resp, err := client.Post(url, "application/json", post) if err != nil { return err }