From 454dfccf4ef4dbf6bdfe1be24e6f28141d55b56a Mon Sep 17 00:00:00 2001 From: Larry Rosenman Date: Wed, 17 Jul 2019 19:22:24 +0000 Subject: [PATCH] mail/dovecot: stop whining about TCP_NODELAY errors. [PATCH] lib: ostream-file: Don't log any errors when setting TCP_NODELAY It's likely never useful to log the error, and it seems more and more unexpected errors just keep popping up. Obtained from: upstream git. --- mail/dovecot/Makefile | 2 +- .../files/patch-src_lib_ostream-file.c | 34 ++++++++++++++----- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/mail/dovecot/Makefile b/mail/dovecot/Makefile index 5445ff5cc470..eaa8f395d77c 100644 --- a/mail/dovecot/Makefile +++ b/mail/dovecot/Makefile @@ -8,7 +8,7 @@ PORTNAME= dovecot PORTVERSION= 2.3.7 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= mail ipv6 MASTER_SITES= https://dovecot.org/releases/2.3/ diff --git a/mail/dovecot/files/patch-src_lib_ostream-file.c b/mail/dovecot/files/patch-src_lib_ostream-file.c index 5c3cc5daba69..cf9b7f382de2 100644 --- a/mail/dovecot/files/patch-src_lib_ostream-file.c +++ b/mail/dovecot/files/patch-src_lib_ostream-file.c @@ -1,11 +1,29 @@ ---- src/lib/ostream-file.c.orig 2019-07-12 19:18:41 UTC +--- src/lib/ostream-file.c.orig 2019-07-12 19:19:37 UTC +++ src/lib/ostream-file.c -@@ -334,7 +334,7 @@ static void o_stream_tcp_flush_via_nodelay(struct file +@@ -333,17 +333,17 @@ static int buffer_flush(struct file_ostream *fstream) + static void o_stream_tcp_flush_via_nodelay(struct file_ostream *fstream) { if (net_set_tcp_nodelay(fstream->fd, TRUE) < 0) { - if (errno != ENOTSUP && errno != ENOTSOCK && -- errno != ENOPROTOOPT) { -+ errno != ENOPROTOOPT && errno != EINVAL) { - i_error("file_ostream.net_set_tcp_nodelay(%s, TRUE) failed: %m", - o_stream_get_name(&fstream->ostream.ostream)); - } +- if (errno != ENOTSUP && errno != ENOTSOCK && +- errno != ENOPROTOOPT && errno != EINVAL) { +- i_error("file_ostream.net_set_tcp_nodelay(%s, TRUE) failed: %m", +- o_stream_get_name(&fstream->ostream.ostream)); +- } ++ /* Don't bother logging errors. There are quite a lot of ++ different errors that need to be ignored, and it differs ++ between OSes. At least: ++ Linux: ENOTSUP, ENOTSOCK, ENOPROTOOPT ++ FreeBSD: EINVAL, ECONNRESET */ + fstream->no_socket_nodelay = TRUE; + } else if (net_set_tcp_nodelay(fstream->fd, FALSE) < 0) { +- /* We already successfully enabled TCP_NODELAY, so we're really +- not expecting any errors here. */ +- i_error("file_ostream.net_set_tcp_nodelay(%s, FALSE) failed: %m", +- o_stream_get_name(&fstream->ostream.ostream)); ++ /* We already successfully enabled TCP_NODELAY, so there ++ shouldn't really be errors. Except ECONNRESET can possibly ++ still happen between these two calls, so again don't log ++ errors. */ + fstream->no_socket_nodelay = TRUE; + } + }