]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: Add http_client_settings.read/write/delete_max_attempts
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 24 Jul 2023 21:27:44 +0000 (00:27 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:09 +0000 (12:34 +0200)
If they are non-zero, they override the max_attempts setting for the
specified HTTP methods.

src/lib-http/http-client-request.c
src/lib-http/http-client.h

index cc8298f05fb854e5c51f86338c4737406cb4e45a..83dc2de28825091f2e93f311a52facd6eda2264b 100644 (file)
@@ -127,17 +127,23 @@ http_client_request_new(struct http_client *client, const char *method,
        req->attempt_timeout_msecs = client->set->request_timeout_msecs;
        if (strcasecmp(method, "GET") == 0 ||
            strcasecmp(method, "HEAD") == 0) {
+               if (client->set->read_max_attempts != 0)
+                       req->max_attempts = client->set->read_max_attempts;
                if (client->set->read_request_timeout_msecs != 0) {
                        req->attempt_timeout_msecs =
                                client->set->read_request_timeout_msecs;
                }
        } else if (strcasecmp(method, "PUT") == 0 ||
                   strcasecmp(method, "POST") == 0) {
+               if (client->set->write_max_attempts != 0)
+                       req->max_attempts = client->set->write_max_attempts;
                if (client->set->write_request_timeout_msecs != 0) {
                        req->attempt_timeout_msecs =
                                client->set->write_request_timeout_msecs;
                }
        } else if (strcasecmp(method, "DELETE") == 0) {
+               if (client->set->delete_max_attempts != 0)
+                       req->max_attempts = client->set->delete_max_attempts;
                if (client->set->delete_request_timeout_msecs != 0) {
                        req->attempt_timeout_msecs =
                                client->set->delete_request_timeout_msecs;
index 4ecabd0daff3a445136850b68264f22c6ab4143b..2ad67ed9cbd6d5b1f60bfb21e8b39933cf6e7e5c 100644 (file)
@@ -76,6 +76,12 @@ struct http_client_settings {
 
        /* Maximum number of attempts for a request */
        unsigned int max_attempts;
+       /* If non-zero, override max_attempts for GET/HEAD requests. */
+       unsigned int read_max_attempts;
+       /* If non-zero, override max_attempts for PUT/POST requests. */
+       unsigned int write_max_attempts;
+       /* If non-zero, override max_attempts for DELETE requests. */
+       unsigned int delete_max_attempts;
 
        /* Maximum number of connection attempts to a host before all associated
           requests fail.