aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-10 01:01:12 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-03-10 01:01:12 +0100
commit80eeb7b2cc04989c4df93792ca4fcf1d2ee7adb5 (patch)
treea6fe5780b784de24db9e5bf38991c4da6cc78dd8 /cmd
parenta9990066cfc70f3137d00fe792f4fd6c09846101 (diff)
Poor men concurency
Diffstat (limited to 'cmd')
-rw-r--r--cmd/acme/main.go45
1 files changed, 33 insertions, 12 deletions
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