History log of /lighttpd1.4/src/mod_fastcgi.c (Results 1 – 25 of 310)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: lighttpd-1.4.69, lighttpd-1.4.68
# 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)


# b82d7b8a 06-Dec-2022 Glenn Strauss <[email protected]>

[multiple] mark mod_*_plugin_init() funcs cold


Revision tags: lighttpd-1.4.67, lighttpd-1.4.66, lighttpd-1.4.65
# 2a7d3a27 10-May-2022 Glenn Strauss <[email protected]>

[multiple] rename status_counter -> plugin_stats


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

[mod_ajp13,mod_fastcgi] recv_parse smaller funcs

break *_recv_parse() into a pair of slightly smaller funcs


# 1acf9db7 21-Oct-2021 Glenn Strauss <[email protected]>

[mod_ajp13,mod_fastcgi] check resp w/ content len

limit response body from mod_ajp13 and mod_fastcgi to Content-Length,
if Content-Length is provided in response headers; discard excess


# 8d13233b 16-Oct-2021 Glenn Strauss <[email protected]>

[mod_ajp13,mod_fastcgi] comment: no response body

add comment for handling of streaming with no response body

add commented-out code to disable streaming to wait for backend protocol
to signal end

[mod_ajp13,mod_fastcgi] comment: no response body

add comment for handling of streaming with no response body

add commented-out code to disable streaming to wait for backend protocol
to signal end of response (prevent http_response_write_prepare() from
short-circuiting and finishing responses without response body)

x-ref:
"FastCGI premature socket close with response streaming and 204 status"
https://redmine.lighttpd.net/boards/2/topics/10066

show more ...


Revision tags: lighttpd-1.4.60
# 6e45cff0 25-Sep-2021 Glenn Strauss <[email protected]>

[core] disable streaming response with authorizer (fixes #3106)

disable streaming response while processing "authorizer" mode
until "authorizer" response 200 OK from the backend is complete

(thx je

[core] disable streaming response with authorizer (fixes #3106)

disable streaming response while processing "authorizer" mode
until "authorizer" response 200 OK from the backend is complete

(thx jefftharris)

x-ref:
"FastCGI authorizer hang with server.stream-response-body"
https://redmine.lighttpd.net/boards/2/topics/9969
"FastCGI authorizer hang with server.stream-response-body"
https://redmine.lighttpd.net/issues/3106

show more ...


# 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 ...


# 7a21b385 25-Aug-2021 Glenn Strauss <[email protected]>

[core] log_error_multiline()

rename log_error_multiline_buffer() to log_error_multiline()
and take (char *)ptr and (size_t)len instead of (buffer *)b

When debug printing request and response header

[core] log_error_multiline()

rename log_error_multiline_buffer() to log_error_multiline()
and take (char *)ptr and (size_t)len instead of (buffer *)b

When debug printing request and response headers,
print each header on separate line for readability
and omit '\r' if "\r\n" ends line

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)


# 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 ...


# dc01487e 25-Mar-2021 Glenn Strauss <[email protected]>

[multiple] use buffer_append_* aggregates

reduces the number of round-trips into some frequently-called routines


# 38c87358 16-Mar-2021 Glenn Strauss <[email protected]>

[multiple] optimize primitives, buffer_extend()

optimize buffer_* primitives

Other than buffer_string_set_length(), reallocate with one power-2 step
in size (or use the requested size, if larger).

[multiple] optimize primitives, buffer_extend()

optimize buffer_* primitives

Other than buffer_string_set_length(), reallocate with one power-2 step
in size (or use the requested size, if larger). This replaces the fixed
BUFFER_PIECE_SIZE round-up of only 64 bytes extension each reallocation,
which could lead to excessive reallocations in some scenarios.

buffer_extend() convenience routine to prep for batch append
(combines buffer_string_prepare_append() and buffer_commit())

mod_fastcgi, mod_scgi, mod_proxy and others now leverage buffer_extend()

mod_scgi directly performs little-endian encoding of short ints

http_response_write_header() optimizes writing response header,
leveraging buffer_extend()

modify mod_proxy to append line ends
similar to how it is done in http_response_write_header()
(removes one call to buffer_append_string_len())

show more ...


# c95f832f 05-Mar-2021 Glenn Strauss <[email protected]>

[core] http_cgi.[ch] CGI interfaces (RFC 3875)

collect Common Gateway Interface (CGI) interfaces (RFC 3875)


Revision tags: lighttpd-1.4.59
# 5ccebbf0 22-Jan-2021 Glenn Strauss <[email protected]>

[multiple] quiet some clang-analyzer warnings


Revision tags: lighttpd-1.4.58
# fc01b820 21-Dec-2020 Glenn Strauss <[email protected]>

[tests] remove FastCGI test dependency on libfcgi

- rewrite fcgi-responder as standalone app
fcgi-responder is now a minimal, standalone FastCGI server for tests
- remove dependency on fcgi-devel

[tests] remove FastCGI test dependency on libfcgi

- rewrite fcgi-responder as standalone app
fcgi-responder is now a minimal, standalone FastCGI server for tests
- remove dependency on fcgi-devel package
- merge fcgi-auth into fcgi-responder

show more ...


Revision tags: lighttpd-1.4.57, lighttpd-1.4.56
# 54922d61 25-Nov-2020 Glenn Strauss <[email protected]>

[mod_fastcgi] move src/fastcgi.h into src/compat/


# f2b33e75 12-Nov-2020 Glenn Strauss <[email protected]>

[multiple] add back-pressure gw data pump (fixes #3033)

When server.stream-request-body = 0 (the default), the entire request
body is collected before engaging the backend. For backends which
requi

[multiple] add back-pressure gw data pump (fixes #3033)

When server.stream-request-body = 0 (the default), the entire request
body is collected before engaging the backend. For backends which
require data framing, this could lead to growth in memory use as large
requests were framed all at once.

Prefer to retain large request bodies in temporary files on disk and
frame in portions as write queue to backend drains below a threshold.

x-ref:
"Memory Growth with PUT and full buffered streams"
https://redmine.lighttpd.net/issues/3033

show more ...


# c0e2667b 09-Nov-2020 Glenn Strauss <[email protected]>

[multiple] handle NULL val as empty in *_env_add (fixes #3030)

(bug on master branch; never released)

(thx flynn)

x-ref:
"Fastcgi fails if server.tag is empty"
https://redmine.lighttpd.net/iss

[multiple] handle NULL val as empty in *_env_add (fixes #3030)

(bug on master branch; never released)

(thx flynn)

x-ref:
"Fastcgi fails if server.tag is empty"
https://redmine.lighttpd.net/issues/3030

show more ...


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
# 8abbf621 11-Oct-2020 Glenn Strauss <[email protected]>

[mod_fastcgi] decode chunked is cold code path

decode chunked from FastCGI backend is cold code path


# 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)


# 660d719a 23-Sep-2020 Glenn Strauss <[email protected]>

[multiple] code reuse chunkqueue_peek_data()

code reuse of chunkqueue_peek_data() and chunkqueue_read_data()


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

[multiple] inline chunkqueue_length()


# 9ca668c8 28-Jul-2020 Glenn Strauss <[email protected]>

[mod_fastcgi] decode Transfer-Encoding: chunked

decode Transfer-Encoding: chunked from mod_fastcgi backend


# 33c8cf41 25-Jul-2020 Glenn Strauss <[email protected]>

[multiple] rename connection_reset hook to request

rename connection_reset to handle_request_reset


12345678910>>...13