aboutsummaryrefslogtreecommitdiff
path: root/authorize.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-02-02 18:11:51 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-02-02 18:11:51 +0100
commitfba8b2af286ace2aa857123e9c14aa794a42f830 (patch)
treefc49a8afa0493d6bd9455b93bea709bd55215e62 /authorize.go
parent39fe0aa91b4f3d5b17abd391b40957c16421aa2d (diff)
Go concurrent
Diffstat (limited to 'authorize.go')
-rw-r--r--authorize.go25
1 files changed, 18 insertions, 7 deletions
diff --git a/authorize.go b/authorize.go
index 0dc82a2..6b3d22e 100644
--- a/authorize.go
+++ b/authorize.go
@@ -1,6 +1,9 @@
package acme
-import "time"
+import (
+ "sync"
+ "time"
+)
// Authorization request
type Authorization struct {
@@ -61,19 +64,27 @@ func (p *Provider) authz(s Signer, domain string, sol map[ChalType]Solver) error
return err
}
// second step: choose and start solver
+ wg := sync.WaitGroup{}
for _, ch := range req.Supported(sol) {
- if err = p.solve(s, ch, sol[ch.Type]); err != nil {
- return err
- }
+ wg.Add(1)
+ go func(ch Challenge) {
+ p.solve(s, ch, sol[ch.Type])
+ wg.Done()
+ }(ch)
}
+ wg.Wait()
return nil
}
func (p *Provider) Authorize(s Signer, d *Desire) error {
+ wg := sync.WaitGroup{}
for _, domain := range d.altnames {
- if err := p.authz(s, domain, d.solver); err != nil {
- return err
- }
+ wg.Add(1)
+ go func(domain string) {
+ p.authz(s, domain, d.solver)
+ wg.Done()
+ }(domain)
}
+ wg.Wait()
return nil
}