History log of /lighttpd1.4/src/chunk.c (Results 1 – 25 of 144)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: lighttpd-1.4.69, lighttpd-1.4.68
# da1c7ad2 10-Dec-2022 Glenn Strauss <[email protected]>

[core] chunk.c tweaks

add branch hint to chunkqueue_use_memory()

remove an overly paranoid check for chunkqueue corruption
(were it needed, it would need to be applied in numerous other places)


# 5e14db43 10-Dec-2022 Glenn Strauss <[email protected]>

[multiple] employ ck_calloc, ck_malloc shared code

employ ck_calloc(), ck_malloc() shared code to slightly reduce code size
(centralize the ck_assert() to check that memory allocation succeeded)


Revision tags: lighttpd-1.4.67
# 3991099e 14-Sep-2022 Glenn Strauss <[email protected]>

[core] handle ENOSPC with pwritev() (#3171)

handle ENOSPC with pwritev() and fallback to next item in
server.upload-dirs list

x-ref:
"File upload regression with --disable-lfs"
https://redmine.

[core] handle ENOSPC with pwritev() (#3171)

handle ENOSPC with pwritev() and fallback to next item in
server.upload-dirs list

x-ref:
"File upload regression with --disable-lfs"
https://redmine.lighttpd.net/issues/3171

show more ...


Revision tags: lighttpd-1.4.66, lighttpd-1.4.65
# 1f4cc747 17-Mar-2022 Glenn Strauss <[email protected]>

[core] chunkqueue_steal() handle unexpected 0 len

pedantic: chunkqueue_steal() handle unexpected 0 len and 0-length chunks

more code reuse (slightly more instructions) when pwritev not available


# 2d1b1672 13-Feb-2022 Glenn Strauss <[email protected]>

[core] chunk_file_pread() to wrap pread()


# e05ce805 08-Feb-2022 Glenn Strauss <[email protected]>

[multiple] shared code for struct chunk and mmap

chunkqueue_chunk_file_view()

reduces size of struct chunk

use mmap with mod_deflate libdeflate, if mmap available,
even when lighttpd not built w

[multiple] shared code for struct chunk and mmap

chunkqueue_chunk_file_view()

reduces size of struct chunk

use mmap with mod_deflate libdeflate, if mmap available,
even when lighttpd not built with --enable-mmap

avoid using mmap on temp files in chunkqueue (c->file.is_temp)
since pread() with a reasonable block size is typically as fast
or faster than mmap on files read sequentially and used only once,
especially when writing results to limited-size socket buffers
(and lighttpd temp files are, in most cases, by default about 1 MB)
(Exception: sometimes mmap is used for convenience or to fulfill
a requirement, e.g. one-shot libdeflate in mod_deflate)
(There are many factors which influence speed of mmap versus pread,
so this should not be construed as generic usage advice.)

show more ...


# 9b55ac6d 08-Feb-2022 Glenn Strauss <[email protected]>

[multiple] pedantic chunk.c checks for 0-len chunk


# 6cd3b5f8 06-Feb-2022 Glenn Strauss <[email protected]>

[multiple] use new sys_setjmp_eval3() interface

wrap system os setjmp or compiler try/catch and access mmap inside
callback to protect against SIGBUS (or _WIN32 EXCEPTION_IN_PAGE_ERROR)


Revision tags: lighttpd-1.4.64, lighttpd-1.4.63, lighttpd-1.4.62, lighttpd-1.4.61
# e8eac0c2 28-Oct-2021 Glenn Strauss <[email protected]>

[core] chunkqueue_small_resp_optim() comment


# 9a442b55 27-Oct-2021 Glenn Strauss <[email protected]>

[core] tighten chunkqueue_small_resp_optim()


# 41564a7e 26-Oct-2021 Glenn Strauss <[email protected]>

[core] tighten chunkqueue_mark_written; better asm

chunkqueue_mark_written() also removes finished chunks from beginning of
chunkqueue instead of separate call to chunkqueue_remove_finished_chunks


# 3964a6ac 26-Oct-2021 Glenn Strauss <[email protected]>

[core] pwritev w/ chunkqueue_steal_with_tempfiles

use pwritev(), where available, with chunkqueue_steal_with_tempfiles()

The initial write to tempfiles (when response initially grows too
large in m

[core] pwritev w/ chunkqueue_steal_with_tempfiles

use pwritev(), where available, with chunkqueue_steal_with_tempfiles()

The initial write to tempfiles (when response initially grows too
large in memory) can be multiple MEM_CHUNKs, so attempt to use
single pwritev() syscall

show more ...


# 907ec277 26-Oct-2021 Glenn Strauss <[email protected]>

[core] tighten chunkqueue_steal* code; better asm


# 9466afd9 25-Oct-2021 Glenn Strauss <[email protected]>

[core] remove redundant checks in same context


# 71544129 17-Oct-2021 Glenn Strauss <[email protected]>

[core] expose chunkqueue_remove_empty_chunks()

expose chunkqueue_remove_empty_chunks() for use in error recovery
when aborting a chunkqueue_append_buffer_open*()


# 575665ad 05-Oct-2021 Glenn Strauss <[email protected]>

[multiple] __attribute_nonnull__ now takes params

define __attribute_nonnull__(params) with params to match
recent changes in glibc development (targetting glibc 2.35 in Feb 2022)

x-ref:
new __at

[multiple] __attribute_nonnull__ now takes params

define __attribute_nonnull__(params) with params to match
recent changes in glibc development (targetting glibc 2.35 in Feb 2022)

x-ref:
new __attribute_nonnull__(params) conflicts with third-party
https://sourceware.org/bugzilla/show_bug.cgi?id=28425

show more ...


Revision tags: lighttpd-1.4.60
# 37209081 02-Oct-2021 Glenn Strauss <[email protected]>

[core] portability tweaks for various platforms/cc


# 434fab49 02-Oct-2021 Glenn Strauss <[email protected]>

[core] quiet coverity warnings


# 23fe1312 01-Oct-2021 Glenn Strauss <[email protected]>

[core] chunkqueue_peek_data() mmap experiment

chunkqueue_peek_data() experiment to mmap temporary files

(currently disabled in code due to not making measurable difference
in throughput (during a

[core] chunkqueue_peek_data() mmap experiment

chunkqueue_peek_data() experiment to mmap temporary files

(currently disabled in code due to not making measurable difference
in throughput (during a specific microbenchmark load test),
though it does reduce CPU use by ~10% in the same microbenchmark)

enabling this may cause large spikes in RSS mem usage reported by the
system, due to the read-only memory maps of the temporary files,
but this is nothing to be alarmed about, as the memory maps are
file-backed and read-only, so minimally add to memory pressure

show more ...


# faf76be1 01-Oct-2021 Glenn Strauss <[email protected]>

[core] chunkqueue_mmap_chunk_len() for code reuse

(pull some code into smaller routines for potential code reuse)


# 042622c8 28-Sep-2021 Glenn Strauss <[email protected]>

[core] use pread() to skip lseek()


# 6e62b842 22-Sep-2021 Glenn Strauss <[email protected]>

[core] splice() data from backends to tempfiles

splice() data from backends to tempfiles (where splice() is available);
reduce copying data to userspace when writing data to tempfiles

Note: splice(

[core] splice() data from backends to tempfiles

splice() data from backends to tempfiles (where splice() is available);
reduce copying data to userspace when writing data to tempfiles

Note: splice() on Linux returns EINVAL if target file has O_APPEND set
so lighttpd uses pwrite() (where available) when writing to tempfiles
(instead of lseek() + write(), or O_APPEND and write())

show more ...


# 6bd6226e 22-Sep-2021 Glenn Strauss <[email protected]>

[multiple] avoid empty chunks in chunkqueue

(This might render some calls to chunkqueue_remove_finished_chunks()
no longer necessary)


# 5cab11b7 21-Sep-2021 Glenn Strauss <[email protected]>

[build] check for pread(), pwrite(), splice()


# 9f62f1b1 21-Sep-2021 Glenn Strauss <[email protected]>

[multiple] fdevent_mkostemp()

fdevent_mkostemp() with flags arg so that caller can pass O_APPEND

renamed from fdevent_mkstemp_append(), previously always O_APPEND


123456