Fix WaitFor calls

This commit is contained in:
xenolf 2016-03-11 04:51:02 +01:00
parent c50baa67cb
commit 3252b0bcb9
4 changed files with 7 additions and 6 deletions

View file

@ -8,6 +8,7 @@ import (
"log" "log"
"net" "net"
"strings" "strings"
"time"
"github.com/miekg/dns" "github.com/miekg/dns"
"golang.org/x/net/publicsuffix" "golang.org/x/net/publicsuffix"
@ -68,7 +69,7 @@ func (s *dnsChallenge) Solve(chlng challenge, domain string) error {
logf("[INFO][%s] Checking DNS record propagation...", domain) logf("[INFO][%s] Checking DNS record propagation...", domain)
err = WaitFor(30, 2, func() (bool, error) { err = WaitFor(60*time.Second, 2*time.Second, func() (bool, error) {
return preCheckDNS(fqdn, value) return preCheckDNS(fqdn, value)
}) })
if err != nil { if err != nil {

View file

@ -5,10 +5,10 @@ import (
"time" "time"
) )
// WaitFor polls the given function 'f', once every 'interval' seconds, up to 'timeout' seconds. // WaitFor polls the given function 'f', once every 'interval', up to 'timeout'.
func WaitFor(timeout, interval time.Duration, f func() (bool, error)) error { func WaitFor(timeout, interval time.Duration, f func() (bool, error)) error {
var lastErr string var lastErr string
timeup := time.After(timeout * time.Second) timeup := time.After(timeout)
for { for {
select { select {
case <-timeup: case <-timeup:
@ -24,6 +24,6 @@ func WaitFor(timeout, interval time.Duration, f func() (bool, error)) error {
lastErr = err.Error() lastErr = err.Error()
} }
time.Sleep(interval * time.Second) time.Sleep(interval)
} }
} }

View file

@ -8,7 +8,7 @@ import (
func TestWaitForTimeout(t *testing.T) { func TestWaitForTimeout(t *testing.T) {
c := make(chan error) c := make(chan error)
go func() { go func() {
err := WaitFor(3, 1, func() (bool, error) { err := WaitFor(3*time.Second, 1*time.Second, func() (bool, error) {
return false, nil return false, nil
}) })
c <- err c <- err

View file

@ -71,7 +71,7 @@ func (r *DNSProvider) changeRecord(action, fqdn, value string, ttl int) error {
return err return err
} }
return acme.WaitFor(90, 5, func() (bool, error) { return acme.WaitFor(90*time.Second, 5*time.Second, func() (bool, error) {
status, err := r.client.GetChange(resp.ChangeInfo.ID) status, err := r.client.GetChange(resp.ChangeInfo.ID)
if err != nil { if err != nil {
return false, err return false, err