_CACHED_NONCE="$(echo "$responseHeaders" | grep -i "Replay-Nonce:" | _head_n 1 | tr -d "\r\n " | cut -d ':' -f 2 | cut -d , -f 1)"
- _body="$response"
- if [ "$needbase64" ]; then
- _body="$(echo "$_body" | _dbase64 multiline)"
- _debug3 _body "$_body"
- fi
- _retryafter=$(echo "$responseHeaders" | grep -i "^Retry-After *: *[0-9]\+ *" | cut -d : -f 2 | tr -d ' ' | tr -d '\r')
-
- if [ "$code" = '503' ] || [ "$_retryafter" ]; then
- _sleep_overload_retry_sec=$_retryafter
- if [ -z "$_sleep_overload_retry_sec" ]; then
- _sleep_overload_retry_sec=5
+ if ! _startswith "$code" "2"; then
+ _body="$response"
+ if [ "$needbase64" ]; then
+ _body="$(echo "$_body" | _dbase64 multiline)"
+ _debug3 _body "$_body"
+ fi
+
+ _retryafter=$(echo "$responseHeaders" | grep -i "^Retry-After *: *[0-9]\+ *" | cut -d : -f 2 | tr -d ' ' | tr -d '\r')
+ if [ "$code" = '503' ]; then
+ _sleep_overload_retry_sec=$_retryafter
+ if [ -z "$_sleep_overload_retry_sec" ]; then
+ _sleep_overload_retry_sec=5
+ fi
+ if [ $_sleep_overload_retry_sec -le 600 ]; then
+ _info "It seems the CA server is currently overloaded, let's wait and retry. Sleeping $_sleep_overload_retry_sec seconds."
+ _sleep $_sleep_overload_retry_sec
+ continue
+ else
+ _info "The retryafter=$_retryafter is too large > 600, not retry anymore."
+ fi
fi
- if [ $_sleep_overload_retry_sec -le 600 ]; then
- _info "It seems the CA server is currently overloaded, let's wait and retry. Sleeping $_sleep_overload_retry_sec seconds."
- _sleep $_sleep_overload_retry_sec
+ if _contains "$_body" "JWS has invalid anti-replay nonce" || _contains "$_body" "JWS has an invalid anti-replay nonce"; then
+ _info "It seems the CA server is busy now, let's wait and retry. Sleeping $_sleep_retry_sec seconds."
+ _CACHED_NONCE=""
+ _sleep $_sleep_retry_sec
+ continue
+ fi
+ if _contains "$_body" "The Replay Nonce is not recognized"; then
+ _info "The replay Nonce is not valid, let's get a new one, Sleeping $_sleep_retry_sec seconds."
+ _CACHED_NONCE=""
+ _sleep $_sleep_retry_sec
continue
- else
- _info "The retryafter=$_retryafter is too large > 600, not retry anymore."
- return 1
fi
fi
- if _contains "$_body" "JWS has invalid anti-replay nonce" || _contains "$_body" "JWS has an invalid anti-replay nonce"; then
- _info "It seems the CA server is busy now, let's wait and retry. Sleeping $_sleep_retry_sec seconds."
- _CACHED_NONCE=""
- _sleep $_sleep_retry_sec
- continue
- fi
- if _contains "$_body" "The Replay Nonce is not recognized"; then
- _info "The replay Nonce is not valid, let's get a new one, Sleeping $_sleep_retry_sec seconds."
- _CACHED_NONCE=""
- _sleep $_sleep_retry_sec
- continue
- fi
-
return 0
done
_info "Giving up sending to CA server after $MAX_REQUEST_RETRY_TIMES retries."