From 80eeb7b2cc04989c4df93792ca4fcf1d2ee7adb5 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 10 Mar 2016 01:01:12 +0100 Subject: Poor men concurency --- cmd/acme/main.go | 45 +++++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) (limited to 'cmd/acme/main.go') diff --git a/cmd/acme/main.go b/cmd/acme/main.go index d0a0fd2..478192b 100644 --- a/cmd/acme/main.go +++ b/cmd/acme/main.go @@ -4,6 +4,7 @@ package main import ( "flag" "log" + "sync" "dim13.org/acme" ) @@ -20,11 +21,17 @@ func dialProvider(p provider) error { if err != nil { return err } + wg := sync.WaitGroup{} for _, a := range p.Account { - if err := loadAccount(prov, a); err != nil { - return err - } - } + wg.Add(1) + go func(a account) { + defer wg.Done() + if err := loadAccount(prov, a); err != nil { + log.Println(err) + } + }(a) + } + wg.Wait() return nil } @@ -59,11 +66,17 @@ func loadAccount(prov *acme.Provider, a account) error { } } + wg := sync.WaitGroup{} for _, d := range a.Domain { - if err := requestCert(prov, acc, d); err != nil { - return err - } - } + wg.Add(1) + go func(d domain) { + defer wg.Done() + if err := requestCert(prov, acc, d); err != nil { + log.Println(err) + } + }(d) + } + wg.Wait() return nil } @@ -92,12 +105,20 @@ func requestCert(prov *acme.Provider, acc *acme.Account, d domain) error { des.RegisterSolver(tlsSol) } - log.Println("Authorize", d.Altnames) - if err := prov.Authorize(acc, des); err != nil { - return err + wg := sync.WaitGroup{} + for _, an := range d.Altnames { + wg.Add(1) + go func(an string) { + defer wg.Done() + log.Println("Authorize", an) + if err := prov.Authorize(acc, des, an); err != nil { + log.Println(err) + } + }(an) } + wg.Wait() - log.Println("Request bundle") + log.Println("Request bundle for", d.Altnames) cert, err := prov.Bundle(acc, des) if err != nil { return err -- cgit v1.2.3