summaryrefslogtreecommitdiff
path: root/src/mod_dirlisting.c
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2022-02-07 20:44:29 -0500
committerGlenn Strauss <gstrauss@gluelogic.com>2022-02-19 02:40:37 -0500
commit9b55ac6da56699e8d234b909963ec66c648dbca7 (patch)
tree0c67033865eefeb3eb2ee04695b53cefc9ef21d0 /src/mod_dirlisting.c
parent6cd3b5f8affe03498911e6958ec3702fd3f8d7c6 (diff)
downloadlighttpd-git-9b55ac6da56699e8d234b909963ec66c648dbca7.tar.gz
[multiple] pedantic chunk.c checks for 0-len chunk
Diffstat (limited to 'src/mod_dirlisting.c')
-rw-r--r--src/mod_dirlisting.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/mod_dirlisting.c b/src/mod_dirlisting.c
index 7667c78c..1366a235 100644
--- a/src/mod_dirlisting.c
+++ b/src/mod_dirlisting.c
@@ -1519,16 +1519,17 @@ static int mod_dirlisting_write_cq (const int fd, chunkqueue * const cq, log_err
cq->bytes_out -= in.bytes_in;
/*(similar to mod_webdav.c:mod_webdav_write_cq(), but operates on two cqs)*/
- chunkqueue_remove_finished_chunks(&in);
while (!chunkqueue_is_empty(&in)) {
ssize_t wr = chunkqueue_write_chunk(fd, &in, errh);
- if (wr > 0)
+ if (__builtin_expect( (wr > 0), 1))
chunkqueue_steal(cq, &in, wr);
else if (wr < 0) {
/*(writing to tempfile failed; transfer remaining data back to cq)*/
chunkqueue_append_chunkqueue(cq, &in);
return 0;
}
+ else /*(wr == 0)*/
+ chunkqueue_remove_finished_chunks(&in);
}
return 1;
}