Commit 09a7af8c authored by Matthew Holt's avatar Matthew Holt

https: Wait as long as possible to create ACME client at startup (fixes #617)

parent ecf913e5
...@@ -117,16 +117,26 @@ func ObtainCerts(configs []server.Config, allowPrompts, proxyACME bool) error { ...@@ -117,16 +117,26 @@ func ObtainCerts(configs []server.Config, allowPrompts, proxyACME bool) error {
groupedConfigs := groupConfigsByEmail(configs, allowPrompts) groupedConfigs := groupConfigsByEmail(configs, allowPrompts)
for email, group := range groupedConfigs { for email, group := range groupedConfigs {
client, err := NewACMEClient(email, allowPrompts) // Wait as long as we can before creating the client, because it
if err != nil { // may not be needed, for example, if we already have what we
return errors.New("error creating client: " + err.Error()) // need on disk. Creating a client involves the network and
} // potentially prompting the user, etc., so only do if necessary.
var client *ACMEClient
for _, cfg := range group { for _, cfg := range group {
if cfg.Host == "" || existingCertAndKey(cfg.Host) { if cfg.Host == "" || existingCertAndKey(cfg.Host) {
continue continue
} }
// Now we definitely do need a client
if client == nil {
var err error
client, err = NewACMEClient(email, allowPrompts)
if err != nil {
return errors.New("error creating client: " + err.Error())
}
}
// c.Configure assumes that allowPrompts == !proxyACME, // c.Configure assumes that allowPrompts == !proxyACME,
// but that's not always true. For example, a restart where // but that's not always true. For example, a restart where
// the user isn't present and we're not listening on port 80. // the user isn't present and we're not listening on port 80.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment