iAdvance send buffer in xsendfile for conservative method. - 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 74efed84eb2e5cc3f5b72be8b112020a362e7232 /scm/geomyidae/commit/74efed84eb2e5cc3f5b72be8b112020a362e7232.gph bitreich.org 70 1parent e9292b7acff19655482c6b53ff19f8c51f06bdcd /scm/geomyidae/commit/e9292b7acff19655482c6b53ff19f8c51f06bdcd.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Wed, 7 Feb 2018 20:17:56 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdvance send buffer in xsendfile for conservative method. Err bitreich.org 70 i Err bitreich.org 70 iThanks Lucas Gabriel Vuotto ! Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M ind.c | 6 ++++-- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 4 insertions(+), 2 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@@ -78,7 +78,7 @@ int Err bitreich.org 70 i xsendfile(int fd, int sock) Err bitreich.org 70 i { Err bitreich.org 70 i struct stat st; Err bitreich.org 70 i- char *sendb; Err bitreich.org 70 i+ char *sendb, *sendi; 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@@ -121,12 +121,14 @@ xsendfile(int fd, int sock) Err bitreich.org 70 i if (count > 0) { Err bitreich.org 70 i sendb = xmalloc(bufsiz); Err bitreich.org 70 i while ((len = read(fd, sendb, bufsiz)) > 0) { Err bitreich.org 70 i+ sendi = sendb; Err bitreich.org 70 i while (len > 0) { Err bitreich.org 70 i- if ((sent = send(sock, sendb, len, 0)) < 0) { Err bitreich.org 70 i+ if ((sent = send(sock, sendi, len, 0)) < 0) { Err bitreich.org 70 i free(sendb); Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i len -= sent; Err bitreich.org 70 i+ sendi += sent; Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i free(sendb); Err bitreich.org 70 .