History log of /lighttpd1.4/src/http_chunk.c (Results 1 – 25 of 56)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: lighttpd-1.4.69, lighttpd-1.4.68, lighttpd-1.4.67, lighttpd-1.4.66, lighttpd-1.4.65
# 2d1b1672 13-Feb-2022 Glenn Strauss <[email protected]>

[core] chunk_file_pread() to wrap pread()


Revision tags: lighttpd-1.4.64, lighttpd-1.4.63, lighttpd-1.4.62, lighttpd-1.4.61, lighttpd-1.4.60
# 042622c8 28-Sep-2021 Glenn Strauss <[email protected]>

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


# f19f7162 17-Sep-2021 Glenn Strauss <[email protected]>

[multiple] internal control for backend read bytes

separate internal control for backend max_per_read

When not streaming, large reads will be flushed to temp files on disk.
When streaming, use a sm

[multiple] internal control for backend read bytes

separate internal control for backend max_per_read

When not streaming, large reads will be flushed to temp files on disk.
When streaming, use a smaller buffer to help reduce memory usage.

When not streaming, attempt to read and empty kernel socket bufs.
(e.g. MAX_READ_LIMIT 256k)

When writing to sockets (or pipes) attempt to fill kernel socket bufs.
(e.g. MAX_WRITE_LIMIT 256k)

show more ...


# e97a5b7e 09-Sep-2021 Glenn Strauss <[email protected]>

[core] clear buffer after backend dechunk

(thx flynn)

clear buffer after backend dechunk if not sending chunked to client

x-ref:
"Memory fragmentation with HTTP/2 enabled"
https://redmine.ligh

[core] clear buffer after backend dechunk

(thx flynn)

clear buffer after backend dechunk if not sending chunked to client

x-ref:
"Memory fragmentation with HTTP/2 enabled"
https://redmine.lighttpd.net/issues/3084

show more ...


# 67c0b149 02-Aug-2021 Glenn Strauss <[email protected]>

[multiple] remove base.h include where not used

(substitute request.h if file only accesses request_st,
and not connection or server structs)


# 833d6587 24-Jul-2021 Glenn Strauss <[email protected]>

[core] http_response_append_{buffer,mem}()

manage r->resp_body_scratchpad in new funcs
http_response_append_buffer()
http_response_append_mem()
rather than
http_chunk_decode_append_buffer()

[core] http_response_append_{buffer,mem}()

manage r->resp_body_scratchpad in new funcs
http_response_append_buffer()
http_response_append_mem()
rather than
http_chunk_decode_append_buffer()
http_chunk_decode_append_mem()
which now only decode chunked encoding, more apropos for the func names

show more ...


# 1ca721d4 19-Jun-2021 Glenn Strauss <[email protected]>

[core] reduce excess cc inlining in http_chunk.c


# af3df29a 09-Jun-2021 Glenn Strauss <[email protected]>

[multiple] reduce redundant NULL buffer checks

This commit is a large set of code changes and results in removal of
hundreds, perhaps thousands, of CPU instructions, a portion of which
are on hot co

[multiple] reduce redundant NULL buffer checks

This commit is a large set of code changes and results in removal of
hundreds, perhaps thousands, of CPU instructions, a portion of which
are on hot code paths.

Most (buffer *) used by lighttpd are not NULL, especially since buffers
were inlined into numerous larger structs such as request_st and chunk.

In the small number of instances where that is not the case, a NULL
check is often performed earlier in a function where that buffer is
later used with a buffer_* func. In the handful of cases that remained,
a NULL check was added, e.g. with r->http_host and r->conf.server_tag.

- check for empty strings at config time and set value to NULL if blank
string will be ignored at runtime; at runtime, simple pointer check
for NULL can be used to check for a value that has been set and is not
blank ("")
- use buffer_is_blank() instead of buffer_string_is_empty(),
and use buffer_is_unset() instead of buffer_is_empty(),
where buffer is known not to be NULL so that NULL check can be skipped
- use buffer_clen() instead of buffer_string_length() when buffer is
known not to be NULL (to avoid NULL check at runtime)
- use buffer_truncate() instead of buffer_string_set_length() to
truncate string, and use buffer_extend() to extend

Examples where buffer known not to be NULL:
- cpv->v.b from config_plugin_values_init is not NULL if T_CONFIG_BOOL
(though we might set it to NULL if buffer_is_blank(cpv->v.b))
- address of buffer is arg (&foo)
(compiler optimizer detects this in most, but not all, cases)
- buffer is checked for NULL earlier in func
- buffer is accessed in same scope without a NULL check (e.g. b->ptr)

internal behavior change:
callers must not pass a NULL buffer to some funcs.
- buffer_init_buffer() requires non-null args
- buffer_copy_buffer() requires non-null args
- buffer_append_string_buffer() requires non-null args
- buffer_string_space() requires non-null arg

show more ...


# 5ff9e2f6 14-May-2021 Glenn Strauss <[email protected]>

[core] remove some (now) unused http_chunk APIs

remove http_chunk_append_file() and http_chunk_append_file_range()

callers should choose to use stat_cache_entry_open() for caching
or should open fi

[core] remove some (now) unused http_chunk APIs

remove http_chunk_append_file() and http_chunk_append_file_range()

callers should choose to use stat_cache_entry_open() for caching
or should open file and check sizes and ranges

show more ...


# 1ce82209 14-May-2021 Glenn Strauss <[email protected]>

[core] range chk http_chunk_append_file_ref_range

add range sanity check in http_chunk_append_file_ref_range()
(before potentially sending HTTP/1.1 chunked header)


# e8de53cb 13-Mar-2021 Glenn Strauss <[email protected]>

[core] fix chunkqueue_small_resp_optim partial rd


Revision tags: lighttpd-1.4.59, lighttpd-1.4.58, lighttpd-1.4.57
# cabced1f 17-Dec-2020 Glenn Strauss <[email protected]>

[core] fix decoding chunked from backend (fixes #3049)

(thx flynn)

fix decoding chunked from backend

truncate response and error out if backend sends excess data
after chunked encoding

x-ref:
"

[core] fix decoding chunked from backend (fixes #3049)

(thx flynn)

fix decoding chunked from backend

truncate response and error out if backend sends excess data
after chunked encoding

x-ref:
"Too much content with HTTP/2.0"
https://redmine.lighttpd.net/issues/3049

show more ...


# 903024d7 15-Dec-2020 Glenn Strauss <[email protected]>

[core] track Content-Length from backend (fixes #3046)

track Content-Length from backend in r->resp_body_scratchpad

x-ref:
"Failure on second request in http proxy backend"
https://redmine.ligh

[core] track Content-Length from backend (fixes #3046)

track Content-Length from backend in r->resp_body_scratchpad

x-ref:
"Failure on second request in http proxy backend"
https://redmine.lighttpd.net/issues/3046

show more ...


# 167513c8 15-Dec-2020 Glenn Strauss <[email protected]>

[core] track chunked encoding state from backend (fixes #3046)

(thx flynn)

track chunked encoding state when parsing backend response

x-ref:
"Failure on second request in http proxy backend"
h

[core] track chunked encoding state from backend (fixes #3046)

(thx flynn)

track chunked encoding state when parsing backend response

x-ref:
"Failure on second request in http proxy backend"
https://redmine.lighttpd.net/issues/3046

show more ...


# 3230c6ef 15-Dec-2020 Glenn Strauss <[email protected]>

[core] reject excess data after chunked encoding (#3046)

reject excess data after chunked encoding when parsing backend response

x-ref:
"Failure on second request in http proxy backend"
https:/

[core] reject excess data after chunked encoding (#3046)

reject excess data after chunked encoding when parsing backend response

x-ref:
"Failure on second request in http proxy backend"
https://redmine.lighttpd.net/issues/3046

show more ...


# 163cb8be 14-Dec-2020 Glenn Strauss <[email protected]>

[core] fix chunked decoding from backend (fixes #3044)

(thx flynn)

x-ref:
"Socket errors after update to version 1.4.56"
https://redmine.lighttpd.net/issues/3044


Revision tags: lighttpd-1.4.56
# edfc5f39 22-Nov-2020 Glenn Strauss <[email protected]>

[core] consolidate chunk size checks


Revision tags: lighttpd-1.4.56-rc7, lighttpd-1.4.56-rc6, lighttpd-1.4.56-rc5, lighttpd-1.4.56-rc4, lighttpd-1.4.56-rc3, lighttpd-1.4.56-rc2, lighttpd-1.4.56-rc1
# 1b74c508 20-Oct-2020 Glenn Strauss <[email protected]>

[core] always lseek() with shared fd

always lseek() with shared fd; remove optim to skip with offset = 0


# 9078cc4c 20-Oct-2020 Glenn Strauss <[email protected]>

[core] http_chunk_append_file_ref_range()

http_chunk_append_file_ref() and http_chunk_append_file_ref_range()
to take stat_cache_entry ref and append FILE_CHUNK


# 9c25581d 11-Oct-2020 Glenn Strauss <[email protected]>

[core] alloc optim reading file, sending chunked

avoid potential double-copy due to not enough space for final '\0'
in http_chunk_append_read_fd_range() if read size is exactly multiple
of 8k and se

[core] alloc optim reading file, sending chunked

avoid potential double-copy due to not enough space for final '\0'
in http_chunk_append_read_fd_range() if read size is exactly multiple
of 8k and sending chunked response

show more ...


# e9912607 10-Oct-2020 Glenn Strauss <[email protected]>

[core] pass open fd to http_response_parse_range


# 81029b8b 29-Sep-2020 Glenn Strauss <[email protected]>

[multiple] inline chunkqueue where always alloc'd

inline struct chunkqueue where always allocated in other structs

(memory locality)


# 97e314fc 08-Sep-2020 Glenn Strauss <[email protected]>

[multiple] inline chunkqueue_length()


# 5fd8a26a 03-Sep-2020 Glenn Strauss <[email protected]>

[core] defer optimization to read small files

defer optimization to read small files into memory until after
response_start hooks have a chance to run, e.g. until after
mod_deflate chooses whether o

[core] defer optimization to read small files

defer optimization to read small files into memory until after
response_start hooks have a chance to run, e.g. until after
mod_deflate chooses whether or not to serve file from compressed
cache, if deflate.cache-dir is configured

show more ...


# 7420526d 28-Jul-2020 Glenn Strauss <[email protected]>

[core] decode Transfer-Encoding: chunked from gw

decode Transfer-Encoding: chunked from gw (gateway backends)

Transfer-Encoding: chunked is a hop-by-hop header.

Handling chunked encoding remove a

[core] decode Transfer-Encoding: chunked from gw

decode Transfer-Encoding: chunked from gw (gateway backends)

Transfer-Encoding: chunked is a hop-by-hop header.

Handling chunked encoding remove a hurdle for mod_proxy to send HTTP/1.1
requests to backends and be able to handle HTTP/1.1 responses.

Other backends ought not to send Transfer-Encoding: chunked, but in
practice, some implementations do.

show more ...


123