]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: client: Simplifly calculation of max mail size.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 15 Sep 2018 13:02:20 +0000 (15:02 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Tue, 9 Oct 2018 06:41:17 +0000 (06:41 +0000)
src/submission/submission-client.c

index bf8d5326709400a44207bc514300ffb31bec98be..f0d9c655dc19e75db2da4d197ed9e34e7dccc8a2 100644 (file)
@@ -342,18 +342,18 @@ void client_disconnect(struct client *client, const char *enh_code,
 
 uoff_t client_get_max_mail_size(struct client *client)
 {
-       uoff_t max_size;
+       uoff_t max_size, limit;
 
        /* Account for the backend server's SIZE limit and calculate our own
           relative to it. */
-       max_size = client_proxy_get_max_mail_size(client);
-       if (max_size == 0 || max_size <= SUBMISSION_MAX_ADDITIONAL_MAIL_SIZE) {
-               max_size = client->set->submission_max_mail_size;
-       } else {
-               max_size = max_size - SUBMISSION_MAX_ADDITIONAL_MAIL_SIZE;
-               if (client->set->submission_max_mail_size > 0 &&
-                       max_size > client->set->submission_max_mail_size)
-                       max_size = client->set->submission_max_mail_size;
+       max_size = client->set->submission_max_mail_size;
+       if (max_size == 0)
+               max_size = UOFF_T_MAX;
+       limit = client_proxy_get_max_mail_size(client);
+       if (limit > SUBMISSION_MAX_ADDITIONAL_MAIL_SIZE) {
+               limit -= SUBMISSION_MAX_ADDITIONAL_MAIL_SIZE;
+               if (limit < max_size)
+                       max_size = limit;
        }
 
        return max_size;