]> git.proxmox.com Git - mirror_acme.sh.git/commitdiff
add retry for temp authz request error
authorneilpang <github@byneil.com>
Thu, 27 Oct 2016 12:07:20 +0000 (20:07 +0800)
committerneilpang <github@byneil.com>
Thu, 27 Oct 2016 12:07:20 +0000 (20:07 +0800)
acme.sh

diff --git a/acme.sh b/acme.sh
index 23abbef7c30339611e66ca995f30c245851ea22d..e9e6152507fb869cc84450af93a40f38ed98a53c 100755 (executable)
--- a/acme.sh
+++ b/acme.sh
@@ -2282,11 +2282,27 @@ issue() {
       
       _info "Getting new-authz for domain" $d
 
-      if ! _send_signed_request "$API/acme/new-authz" "{\"resource\": \"new-authz\", \"identifier\": {\"type\": \"dns\", \"value\": \"$(_idn "$d")\"}}" ; then
-        _err "Can not get domain token."
-        _clearup
-        _on_issue_err
-        return 1
+      _Max_new_authz_retry_times=5
+      _authz_i=0
+      while [ "$_authz_i" -lt "$_Max_new_authz_retry_times" ] ; do
+        _info "Try new-authz for the $_authz_i time."
+        if ! _send_signed_request "$API/acme/new-authz" "{\"resource\": \"new-authz\", \"identifier\": {\"type\": \"dns\", \"value\": \"$(_idn "$d")\"}}" ; then
+          _err "Can not get domain token."
+          _clearup
+          _on_issue_err
+          return 1
+        fi
+        if ! _contains "$response" "An error occurred while processing your request" ; then
+          _info "The new-authz request is ok."
+          break
+        fi
+        _authz_i="$(_math "$_authz_i" + 1)"
+        _info "Sleep $_authz_i to retry."
+        _sleep "$_authz_i"
+      done;
+
+      if [ "$_authz_i" = "$_Max_new_authz_retry_times" ] ; then
+        _debug "new-authz retry reach the max $_Max_new_authz_retry_times times."
       fi
 
       if [ ! -z "$code" ] && [ ! "$code" = '201' ] ; then