autocert: fix locking issue (#1310)

This commit is contained in:
Caleb Doxsey 2020-08-20 14:08:52 -06:00 committed by GitHub
parent d81cfb6e99
commit 79741d5345
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -8,6 +8,7 @@ import (
"net/http"
"sort"
"sync"
"sync/atomic"
"time"
"github.com/caddyserver/certmagic"
@ -29,7 +30,7 @@ type Manager struct {
mu sync.RWMutex
config *config.Config
certmagic *certmagic.Config
acmeMgr *certmagic.ACMEManager
acmeMgr atomic.Value
srv *http.Server
config.ChangeDispatcher
@ -81,7 +82,7 @@ func (mgr *Manager) getCertMagicConfig(options *config.Options) (*certmagic.Conf
}
acmeMgr.DisableTLSALPNChallenge = true
mgr.certmagic.Issuer = acmeMgr
mgr.acmeMgr = acmeMgr
mgr.acmeMgr.Store(acmeMgr)
return mgr.certmagic, nil
}
@ -195,9 +196,7 @@ func (mgr *Manager) updateServer(cfg *config.Config) {
}
func (mgr *Manager) handleHTTPChallenge(w http.ResponseWriter, r *http.Request) bool {
mgr.mu.RLock()
acmeMgr := mgr.acmeMgr
mgr.mu.RUnlock()
acmeMgr := mgr.acmeMgr.Load().(*certmagic.ACMEManager)
if acmeMgr == nil {
return false
}