Force the sending of bytes. - geomyidae - A small C-based gopherd. HTML git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit 953a8272e76a2a224155d2b3f23c1018eec6c501 DIR parent 0fd85c6a6fb9acd564e77ae4824d9870d6a0b1c4 HTML Author: Christoph Lohmann <20h@r-36.net> Date: Fri, 18 Sep 2015 19:08:37 +0200 Force the sending of bytes. Diffstat: M handlr.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) --- DIR diff --git a/handlr.c b/handlr.c @@ -105,7 +105,7 @@ handlebin(int sock, char *file, char *port, char *base, char *args, char *sear, char *ohost) { char sendb[1024]; - int len, fd; + int len, fd, sent; len = -1; USED(port); @@ -116,8 +116,14 @@ handlebin(int sock, char *file, char *port, char *base, char *args, fd = open(file, O_RDONLY); if(fd >= 0) { - while((len = read(fd, sendb, sizeof(sendb))) > 0) - send(sock, sendb, len, 0); + while((len = read(fd, sendb, sizeof(sendb))) > 0) { + while(len > 0) { + sent = send(sock, sendb, len, 0); + if(sent < 0) + break; + len -= sent; + } + } close(fd); } }