add retry for get() and post()
							parent
							
								
									e229ba5945
								
							
						
					
					
						commit
						ae3dda0f8f
					
				
							
								
								
									
										74
									
								
								acme.sh
								
								
								
								
							
							
						
						
									
										74
									
								
								acme.sh
								
								
								
								
							| 
						 | 
				
			
			@ -1768,7 +1768,7 @@ _inithttp() {
 | 
			
		|||
    if [ -z "$ACME_HTTP_NO_REDIRECTS" ]; then
 | 
			
		||||
      _ACME_CURL="$_ACME_CURL -L "
 | 
			
		||||
    fi
 | 
			
		||||
    if [ "$DEBUG" ] && [ "$DEBUG" -ge "2" ]; then
 | 
			
		||||
    if [ "$DEBUG" ] && [ "$DEBUG" -ge 2 ]; then
 | 
			
		||||
      _CURL_DUMP="$(_mktemp)"
 | 
			
		||||
      _ACME_CURL="$_ACME_CURL --trace-ascii $_CURL_DUMP "
 | 
			
		||||
    fi
 | 
			
		||||
| 
						 | 
				
			
			@ -1808,6 +1808,8 @@ _inithttp() {
 | 
			
		|||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_HTTP_MAX_RETRY=8
 | 
			
		||||
 | 
			
		||||
# body  url [needbase64] [POST|PUT|DELETE] [ContentType]
 | 
			
		||||
_post() {
 | 
			
		||||
  body="$1"
 | 
			
		||||
| 
						 | 
				
			
			@ -1815,6 +1817,33 @@ _post() {
 | 
			
		|||
  needbase64="$3"
 | 
			
		||||
  httpmethod="$4"
 | 
			
		||||
  _postContentType="$5"
 | 
			
		||||
  _sleep_retry_sec=1
 | 
			
		||||
  _http_retry_times=0
 | 
			
		||||
  _hcode=0
 | 
			
		||||
  while [ "${_http_retry_times}" -le "$_HTTP_MAX_RETRY" ]; do
 | 
			
		||||
    [ "$_http_retry_times" = "$_HTTP_MAX_RETRY" ]
 | 
			
		||||
    _lastHCode="$?"
 | 
			
		||||
    _debug "Retrying post"
 | 
			
		||||
    _post_impl "$body" "$_post_url" "$needbase64" "$httpmethod" "$_postContentType" "$_lastHCode";
 | 
			
		||||
    _hcode="$?"
 | 
			
		||||
    _debug _hcode "$_hcode"
 | 
			
		||||
    if [ "$_hcode" = "0" ]; then
 | 
			
		||||
      break;
 | 
			
		||||
    fi
 | 
			
		||||
    _http_retry_times=$(_math $_http_retry_times + 1)
 | 
			
		||||
    _sleep $_sleep_retry_sec
 | 
			
		||||
  done
 | 
			
		||||
  return $_hcode
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# body  url [needbase64] [POST|PUT|DELETE] [ContentType] [displayError]
 | 
			
		||||
_post_impl() {
 | 
			
		||||
  body="$1"
 | 
			
		||||
  _post_url="$2"
 | 
			
		||||
  needbase64="$3"
 | 
			
		||||
  httpmethod="$4"
 | 
			
		||||
  _postContentType="$5"
 | 
			
		||||
  displayError="$6"
 | 
			
		||||
 | 
			
		||||
  if [ -z "$httpmethod" ]; then
 | 
			
		||||
    httpmethod="POST"
 | 
			
		||||
| 
						 | 
				
			
			@ -1866,7 +1895,9 @@ _post() {
 | 
			
		|||
    fi
 | 
			
		||||
    _ret="$?"
 | 
			
		||||
    if [ "$_ret" != "0" ]; then
 | 
			
		||||
      _err "Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: $_ret"
 | 
			
		||||
      if [ -z "$displayError" ] || [ "$displayError" = "0" ]; then
 | 
			
		||||
        _err "Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: $_ret"
 | 
			
		||||
      fi
 | 
			
		||||
      if [ "$DEBUG" ] && [ "$DEBUG" -ge "2" ]; then
 | 
			
		||||
        _err "Here is the curl dump log:"
 | 
			
		||||
        _err "$(cat "$_CURL_DUMP")"
 | 
			
		||||
| 
						 | 
				
			
			@ -1922,7 +1953,9 @@ _post() {
 | 
			
		|||
      _debug "wget returns 8, the server returns a 'Bad request' response, lets process the response later."
 | 
			
		||||
    fi
 | 
			
		||||
    if [ "$_ret" != "0" ]; then
 | 
			
		||||
      _err "Please refer to https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html for error code: $_ret"
 | 
			
		||||
      if [ -z "$displayError" ] || [ "$displayError" = "0" ]; then
 | 
			
		||||
        _err "Please refer to https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html for error code: $_ret"
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
    _sed_i "s/^ *//g" "$HTTP_HEADER"
 | 
			
		||||
  else
 | 
			
		||||
| 
						 | 
				
			
			@ -1936,13 +1969,38 @@ _post() {
 | 
			
		|||
 | 
			
		||||
# url getheader timeout
 | 
			
		||||
_get() {
 | 
			
		||||
  url="$1"
 | 
			
		||||
  onlyheader="$2"
 | 
			
		||||
  t="$3"
 | 
			
		||||
  _sleep_retry_sec=1
 | 
			
		||||
  _http_retry_times=0
 | 
			
		||||
  _hcode=0
 | 
			
		||||
  while [ "${_http_retry_times}" -le "$_HTTP_MAX_RETRY" ]; do
 | 
			
		||||
    [ "$_http_retry_times" = "$_HTTP_MAX_RETRY" ]
 | 
			
		||||
    _lastHCode="$?"
 | 
			
		||||
    _debug "Retrying GET"
 | 
			
		||||
    _get_impl "$url" "$onlyheader" "$t" "$_lastHCode";
 | 
			
		||||
    _hcode="$?"
 | 
			
		||||
    _debug _hcode "$_hcode"
 | 
			
		||||
    if [ "$_hcode" = "0" ]; then
 | 
			
		||||
      break;
 | 
			
		||||
    fi
 | 
			
		||||
    _http_retry_times=$(_math $_http_retry_times + 1)
 | 
			
		||||
    _sleep $_sleep_retry_sec
 | 
			
		||||
  done
 | 
			
		||||
  return $_hcode
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# url getheader timeout displayError
 | 
			
		||||
_get_impl() {
 | 
			
		||||
  _debug GET
 | 
			
		||||
  url="$1"
 | 
			
		||||
  onlyheader="$2"
 | 
			
		||||
  t="$3"
 | 
			
		||||
  displayError="$4"
 | 
			
		||||
  _debug url "$url"
 | 
			
		||||
  _debug "timeout=$t"
 | 
			
		||||
 | 
			
		||||
  _debug "displayError" "$displayError"
 | 
			
		||||
  _inithttp
 | 
			
		||||
 | 
			
		||||
  if [ "$_ACME_CURL" ] && [ "${ACME_USE_WGET:-0}" = "0" ]; then
 | 
			
		||||
| 
						 | 
				
			
			@ -1961,7 +2019,9 @@ _get() {
 | 
			
		|||
    fi
 | 
			
		||||
    ret=$?
 | 
			
		||||
    if [ "$ret" != "0" ]; then
 | 
			
		||||
      _err "Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: $ret"
 | 
			
		||||
      if [ -z "$displayError" ] || [ "$displayError" = "0" ]; then
 | 
			
		||||
        _err "Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: $ret"
 | 
			
		||||
      fi
 | 
			
		||||
      if [ "$DEBUG" ] && [ "$DEBUG" -ge "2" ]; then
 | 
			
		||||
        _err "Here is the curl dump log:"
 | 
			
		||||
        _err "$(cat "$_CURL_DUMP")"
 | 
			
		||||
| 
						 | 
				
			
			@ -1987,7 +2047,9 @@ _get() {
 | 
			
		|||
      _debug "wget returns 8, the server returns a 'Bad request' response, lets process the response later."
 | 
			
		||||
    fi
 | 
			
		||||
    if [ "$ret" != "0" ]; then
 | 
			
		||||
      _err "Please refer to https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html for error code: $ret"
 | 
			
		||||
      if [ -z "$displayError" ] || [ "$displayError" = "0" ]; then
 | 
			
		||||
        _err "Please refer to https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html for error code: $ret"
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    ret=$?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue