From: Timo Sirainen Date: Fri, 17 May 2019 13:12:24 +0000 (+0300) Subject: lib: ostream-file - Don't use TCP_CORK or TCP_NODELAY for UNIX sockets X-Git-Tag: 2.3.9~494 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=156fbfe947a4c1df757392002e0dddde5a79e29e;p=thirdparty%2Fdovecot%2Fcore.git lib: ostream-file - Don't use TCP_CORK or TCP_NODELAY for UNIX sockets Either they fail or just don't do anything. --- diff --git a/src/lib/ostream-file.c b/src/lib/ostream-file.c index 3879bbe7b0..ba6bbb1700 100644 --- a/src/lib/ostream-file.c +++ b/src/lib/ostream-file.c @@ -1044,10 +1044,17 @@ struct ostream * o_stream_create_fd_common(int fd, size_t max_buffer_size, fstream->buffer_offset = offset; fstream_init_file(fstream); } else { - if (net_getsockname(fd, NULL, NULL) < 0) { + struct ip_addr local_ip; + + if (net_getsockname(fd, &local_ip, NULL) < 0) { + /* not a socket */ fstream->no_sendfile = TRUE; fstream->no_socket_cork = TRUE; fstream->no_socket_nodelay = TRUE; + } else if (local_ip.family == 0) { + /* UNIX domain socket */ + fstream->no_socket_cork = TRUE; + fstream->no_socket_nodelay = TRUE; } }