iAdd comments for the new xsendfile. - geomyidae - A small C-based gopherd. Err bitreich.org 70 hgit clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ URL:git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ bitreich.org 70 1Log /scm/geomyidae/log.gph bitreich.org 70 1Files /scm/geomyidae/files.gph bitreich.org 70 1Refs /scm/geomyidae/refs.gph bitreich.org 70 1Tags /scm/geomyidae/tag bitreich.org 70 1README /scm/geomyidae/file/README.gph bitreich.org 70 1LICENSE /scm/geomyidae/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 8b62f1e60e9774368bfdb209f3bebc8f51d6e0b8 /scm/geomyidae/commit/8b62f1e60e9774368bfdb209f3bebc8f51d6e0b8.gph bitreich.org 70 1parent b92f702f27e642838e51e8b308c482c08ebdc786 /scm/geomyidae/commit/b92f702f27e642838e51e8b308c482c08ebdc786.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Sun, 24 Sep 2017 18:35:50 +0200 Err bitreich.org 70 i Err bitreich.org 70 iAdd comments for the new xsendfile. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M ind.c | 10 ++++++++++ Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 10 insertions(+), 0 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/ind.c b/ind.c /scm/geomyidae/file/ind.c.gph bitreich.org 70 i@@ -60,16 +60,21 @@ xsendfile(int fd, int sock) Err bitreich.org 70 i size_t bufsiz = BUFSIZ, count = 0; Err bitreich.org 70 i int len, sent, optval; Err bitreich.org 70 i Err bitreich.org 70 i+/* Tell the kernel to not send small packets on every write. */ Err bitreich.org 70 i #ifdef TCP_CORK Err bitreich.org 70 i optval = 1; Err bitreich.org 70 i setsockopt(sock, IPPROTO_TCP, TCP_CORK, &optval, sizeof(int)); Err bitreich.org 70 i #endif Err bitreich.org 70 i Err bitreich.org 70 i+/* TCP_CORK for FreeBSD */ Err bitreich.org 70 i #ifdef TCP_NOPUSH Err bitreich.org 70 i optval = 1; Err bitreich.org 70 i setsockopt(sock, IPPROTO_TCP, TCP_NOPUSH, &optval, sizeof(int)); Err bitreich.org 70 i #endif Err bitreich.org 70 i Err bitreich.org 70 i+/* Err bitreich.org 70 i+ * Disable Nagle algorithm, which means to sent segments as soon as possible. Err bitreich.org 70 i+ */ Err bitreich.org 70 i #ifdef TCP_NODELAY Err bitreich.org 70 i optval = 0; Err bitreich.org 70 i setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof(int)); Err bitreich.org 70 i@@ -81,6 +86,10 @@ xsendfile(int fd, int sock) Err bitreich.org 70 i count = st.st_size; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+/* Err bitreich.org 70 i+ * If we are on the said operating systems, use some special method for data Err bitreich.org 70 i+ * transfer. Err bitreich.org 70 i+ */ Err bitreich.org 70 i #if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__DragonFly__) Err bitreich.org 70 i count = 0; Err bitreich.org 70 i #endif Err bitreich.org 70 i@@ -101,6 +110,7 @@ xsendfile(int fd, int sock) Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+/* Different sendfile(2) implementations on different platforms. :/ */ Err bitreich.org 70 i #ifdef __linux__ Err bitreich.org 70 i return sendfile(sock, fd, NULL, count); Err bitreich.org 70 i #endif Err bitreich.org 70 .