iFix xsendfile properly. - 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 429ea45adba32c7ffa87b8b00528e26edc701e74 /scm/geomyidae/commit/429ea45adba32c7ffa87b8b00528e26edc701e74.gph bitreich.org 70 1parent a2eaebc870ac0a24f35beef0bf8ffa786d5933a3 /scm/geomyidae/commit/a2eaebc870ac0a24f35beef0bf8ffa786d5933a3.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Sun, 7 Jun 2020 21:39:30 +0200 Err bitreich.org 70 i Err bitreich.org 70 iFix xsendfile properly. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M ind.c | 24 ++++++++++-------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 10 insertions(+), 14 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@@ -119,23 +119,19 @@ 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- 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, 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+ 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, 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- free(sendb); Err bitreich.org 70 i- return 0; Err bitreich.org 70 i } Err bitreich.org 70 i- Err bitreich.org 70 i+ free(sendb); Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 .