]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: istream-mail - Use EPIPE if istream is too small
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 23 Dec 2016 18:14:43 +0000 (13:14 -0500)
committerGitLab <gitlab@git.dovecot.net>
Fri, 23 Dec 2016 18:49:06 +0000 (20:49 +0200)
src/lib-storage/index/istream-mail.c

index dfccf32c6cf80931a4c736eca1927e23d333e8d4..313c02c1167d8a671ea090f306767be4f9a2fda7 100644 (file)
@@ -64,11 +64,15 @@ i_stream_mail_set_size_corrupted(struct mail_istream *mstream, size_t size)
        char chr;
 
        if (mstream->expected_size < cur_size) {
+               /* input stream is larger than cached message size */
                str = "smaller";
                chr = '<';
+               mstream->istream.istream.stream_errno = EINVAL;
        } else {
+               /* input stream is smaller than cached message size */
                str = "larger";
                chr = '>';
+               mstream->istream.istream.stream_errno = EPIPE;
        }
 
        mail_id = i_stream_mail_get_cached_mail_id(mstream);
@@ -84,7 +88,6 @@ i_stream_mail_set_size_corrupted(struct mail_istream *mstream, size_t size)
                t_strdup_printf("read(%s) failed: %s",
                                i_stream_get_name(&mstream->istream.istream),
                                mstream->istream.iostream.error));
-       mstream->istream.istream.stream_errno = EINVAL;
 }
 
 static ssize_t