retry on HTTP status code 429

(cherry picked from commit 48ddb8e481c0ba0b59b7193df4aa914ce83a9032)
This commit is contained in:
Domen Kožar 2020-01-29 11:47:39 +01:00 committed by Eelco Dolstra
parent 475c2e5de7
commit ed25fdd66e
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE

View file

@ -357,9 +357,10 @@ struct CurlDownloader : public Downloader
} else if (httpStatus == 401 || httpStatus == 403 || httpStatus == 407) {
// Don't retry on authentication/authorization failures
err = Forbidden;
} else if (httpStatus >= 400 && httpStatus < 500 && httpStatus != 408) {
} else if (httpStatus >= 400 && httpStatus < 500 && httpStatus != 408 && httpStatus != 429) {
// Most 4xx errors are client errors and are probably not worth retrying:
// * 408 means the server timed out waiting for us, so we try again
// * 429 means too many requests, so we retry (with a delay)
err = Misc;
} else if (httpStatus == 501 || httpStatus == 505 || httpStatus == 511) {
// Let's treat most 5xx (server) errors as transient, except for a handful: