# HG changeset patch # User Olaf Wintermann # Date 1564908411 -7200 # Node ID b8515afa450a5714ea8d9c3df3373f379fe2d35a # Parent e870a7c8f22379ad015d185c313206eb808c1bae improve error handling and add some debug code in net_fallback_sendfile diff -r e870a7c8f223 -r b8515afa450a src/server/util/io.c --- a/src/server/util/io.c Sat Aug 03 17:54:54 2019 +0200 +++ b/src/server/util/io.c Sun Aug 04 10:46:51 2019 +0200 @@ -515,22 +515,34 @@ size_t length = sfd->len; while(length > 0) { + // TODO: remove + if(length > sfd->len) { + log_ereport(LOG_WARN, "net_fallback_sendfile: length > sfd->len: %zu > %zu", length, sfd->len); + free(buf); + return IO_ERROR; + } + if((r = system_fread(sfd->fd, buf, 4096)) <= 0) { break; } char *write_buf = buf; while(r > 0) { ssize_t w = fd->write(fd, write_buf, r); + // TODO: remove + if(w > r) { + log_ereport(LOG_WARN, "net_fallback_sendfile: w > r, %zd > %zd", w, r); + w = 0; + } + if(w <= 0) { - break; + free(buf); + fd->io_errno = errno; + return IO_ERROR; } r -= w; length -= w; write_buf += w; } - if(r > 0) { - break; - } } free(buf); if(length > 0) {