From 51b0ba75c14785c6de881560561d273b77ce43b5 Mon Sep 17 00:00:00 2001 From: Stoiko Ivanov Date: Fri, 6 Aug 2021 17:44:29 +0200 Subject: [PATCH] plugin-caller: pull in changes from upstream 3.0.0 Commits ae3dda0f8fc3071495cd1e8dff0fe4a339febb1c and d70b759cb9c5b413cce92e65e841a54a65813962 implementing retrying get and post requests seem worth pulling in. From a quick look through the diff the remaining changes (between 2.9.0 and 3.0.0) should not be relevant for us Signed-off-by: Stoiko Ivanov --- src/proxmox-acme | 62 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/src/proxmox-acme b/src/proxmox-acme index 6cc7b5f..a00d23a 100644 --- a/src/proxmox-acme +++ b/src/proxmox-acme @@ -222,6 +222,8 @@ _resethttp() { : } +_HTTP_MAX_RETRY=8 + # body url [needbase64] [POST|PUT|DELETE] [ContentType] _post() { body="$1" @@ -229,6 +231,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" @@ -272,7 +301,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 fi printf "%s" "$response" return $_ret @@ -283,6 +314,31 @@ _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() { + url="$1" + onlyheader="$2" + t="$3" + displayError="$4" _CURL="curl -L --silent --dump-header $HTTP_HEADER -g " if [ "$HTTPS_INSECURE" ]; then @@ -298,7 +354,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 fi return $ret } -- 2.39.2