diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-03-15 08:02:16 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-03-15 08:02:16 +0200 |
commit | 677473cdfc42b9fd83623902e80de946f108825c (patch) | |
tree | 8b2db22aaf02ec8fcf95e9142ad490e1e26d8bdd /src/util.c | |
parent | 557ac31167d217b19efab8b8cfbd0a97a044a4b7 (diff) | |
download | eclat-677473cdfc42b9fd83623902e80de946f108825c.tar.gz eclat-677473cdfc42b9fd83623902e80de946f108825c.tar.bz2 |
Update docs
Diffstat (limited to 'src/util.c')
-rw-r--r-- | src/util.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -236,7 +236,7 @@ eclat_send_request(struct ec2_request *orig, struct grecs_node **ret_tree) endtime = time(NULL) + max_retry_time; tts = 2; - do { + while (1) { struct grecs_node *node; struct ec2_request *req; @@ -301,11 +301,14 @@ eclat_send_request(struct ec2_request *orig, struct grecs_node **ret_tree) if (dry_run_mode) debug(ECLAT_DEBCAT_MAIN, 1, ("not sending request")); else { + grecs_tree_free(xmltree); + res = curl_easy_perform(io->curl); if (res == CURLE_OK) { xmltree = eclat_io_finish(io); } else { err("CURL: %s", curl_easy_strerror(res)); + xmltree = NULL; ret = 1; } } @@ -314,7 +317,7 @@ eclat_send_request(struct ec2_request *orig, struct grecs_node **ret_tree) curl_slist_free_all(headers); eclat_request_free(req); - if (ret) + if (ret || time(NULL) >= endtime) break; node = grecs_find_node(xmltree, ".Response.Errors.Error.Code"); @@ -329,9 +332,6 @@ eclat_send_request(struct ec2_request *orig, struct grecs_node **ret_tree) if (strcmp(node->v.value->v.string, "RequestLimitExceeded")) break; - grecs_tree_free(xmltree); - xmltree = NULL; - t = random() % tts + 1; warn("request limit exceeded; sleeping for %lu seconds", t); sleep(t); @@ -340,7 +340,7 @@ eclat_send_request(struct ec2_request *orig, struct grecs_node **ret_tree) if (tts == 0 || tts > max_retry_sleep) tts = max_retry_sleep; } - } while (time(NULL) < endtime); + } *ret_tree = xmltree; return ret; |