History log of /lighttpd1.4/src/network_write.c (Results 1 – 25 of 35)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: lighttpd-1.4.69
# 7ec82a55 23-Jan-2023 Glenn Strauss <[email protected]>

[core] disable sendfile() on TARGET_OS_IPHONE

x-ref:
https://redmine.lighttpd.net/boards/3/topics/10842
https://github.com/ndfred/iperf-ios/issues/17
https://github.com/dotnet/runtime/pull/694

[core] disable sendfile() on TARGET_OS_IPHONE

x-ref:
https://redmine.lighttpd.net/boards/3/topics/10842
https://github.com/ndfred/iperf-ios/issues/17
https://github.com/dotnet/runtime/pull/69436

show more ...


Revision tags: 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()


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


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


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

[core] network_write_file_chunk_remap separate fn


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


# 1cd73b08 15-Jun-2021 Glenn Strauss <[email protected]>

[core] move backtrace and assert macros to ck.[ch]


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


# 01fdccd8 24-May-2021 Glenn Strauss <[email protected]>

[core] network_write prefer writev() over write()

When writev() is available, always use writev() instead of write()
(Silently ignores config option to use write() if writev() is available)
(Still u

[core] network_write prefer writev() over write()

When writev() is available, always use writev() instead of write()
(Silently ignores config option to use write() if writev() is available)
(Still uses sendfile() instead of writev() when config selects sendfile)

show more ...


# c5dd8905 24-May-2021 Glenn Strauss <[email protected]>

[core] network_write optimizations

more shared code, better asm


Revision tags: lighttpd-1.4.59, lighttpd-1.4.58, lighttpd-1.4.57, lighttpd-1.4.56, 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
# 3f1a12e5 14-Oct-2020 Glenn Strauss <[email protected]>

[multiple] remove chunk file.start member

c->offset is now offset into file
c->file.length is end of octets to send (end pos + 1)
c->file.length - c->offset is num of octets to send


# 7c1e8129 01-Oct-2020 Glenn Strauss <[email protected]>

[core] handle unexpected EOF reading FILE_CHUNK

(replace existing check which suffered from ToC-ToU race condition)
enhances logic from 2015 commit 593599f1 and avoids repeated fstat()
checks when s

[core] handle unexpected EOF reading FILE_CHUNK

(replace existing check which suffered from ToC-ToU race condition)
enhances logic from 2015 commit 593599f1 and avoids repeated fstat()
checks when sending large files

For mmap(), lighttpd catches SIGBUS if file is (externally) truncated
and lighttpd attempts to access bytes in a read-only mapping more than
a memory page boundary following the end of the file.

For sendfile(), lighttpd returns an error if sendfile() reports no error
and that no bytes have been sent after lighttpd attempts to send a
non-zero number of bytes.

show more ...


# c752d469 22-Feb-2020 Glenn Strauss <[email protected]>

[multiple] correct misspellings in comments

x-ref:
"Script for fixing spelling errors with codespell"
https://redmine.lighttpd.net/boards/3/topics/8947


Revision tags: lighttpd-1.4.55
# 0ff60d82 08-Dec-2019 Glenn Strauss <[email protected]>

[multiple] rename r to rc rv rd wr to be different

variable rename


# 010c2894 25-Nov-2019 Glenn Strauss <[email protected]>

[multiple] prefer (connection *) to (srv *)

convert all log_error_write() to log_error() and pass (log_error_st *)

use con->errh in preference to srv->errh (even though currently same)

avoid passi

[multiple] prefer (connection *) to (srv *)

convert all log_error_write() to log_error() and pass (log_error_st *)

use con->errh in preference to srv->errh (even though currently same)

avoid passing (server *) when previously used only for logging (errh)

show more ...


Revision tags: lighttpd-1.4.54, lighttpd-1.4.53, lighttpd-1.4.52
# 8c0792a5 07-Nov-2018 Glenn Strauss <[email protected]>

[multiple] better packing of struct chunk

remove c->file.name
previous commit modified c->file.name to share buffer with c->mem


Revision tags: lighttpd-1.4.51, lighttpd-1.4.50, lighttpd-1.4.49, lighttpd-1.4.48
# 142971a8 30-Oct-2017 Glenn Strauss <[email protected]>

[core] consolidate backend network write handlers

network_write.[ch] isolates various write, writev, sendfile wrappers


Revision tags: lighttpd-1.4.47, lighttpd-1.4.46, lighttpd-1.4.45, lighttpd-1.4.44, lighttpd-1.4.43, lighttpd-1.4.42, lighttpd-1.4.41, lighttpd-1.4.40
# c489dd6c 02-Jul-2016 Glenn Strauss <[email protected]>

[cygwin] minor: fix compiler warning


# 8abd06a7 19-Mar-2016 Glenn Strauss <[email protected]>

consistent inclusion of config.h at top of files (fixes #2073)

From: Glenn Strauss <[email protected]>

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@3113 152afb58-edef-03

consistent inclusion of config.h at top of files (fixes #2073)

From: Glenn Strauss <[email protected]>

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@3113 152afb58-edef-0310-8abb-c4023f1b3aa9

show more ...


Revision tags: lighttpd-1.4.39, lighttpd-1.4.38, lighttpd-1.4.37
# 593599f1 22-Aug-2015 Stefan Bühler <[email protected]>

rewrite network (write) backends

From: Stefan Bühler <[email protected]>

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@3012 152afb58-edef-0310-8abb-c4023f1b3aa9


Revision tags: lighttpd-1.4.36, lighttpd-1.4.36--rc1
# ad3e93ea 08-Feb-2015 Stefan Bühler <[email protected]>

Use buffer API to read and modify "used" member

- a lot of code tried to handle manually adding terminating zeroes and
keeping track of the correct "used" count.
Replaced all "external" usages w

Use buffer API to read and modify "used" member

- a lot of code tried to handle manually adding terminating zeroes and
keeping track of the correct "used" count.
Replaced all "external" usages with simple wrapper functions:
* buffer_string_is_empty (used <= 1), buffer_is_empty (used == 0);
prefer buffer_string_is_empty
* buffer_string_set_length
* buffer_string_length
* CONST_BUF_LEN() macro
- removed "static" buffer hacks (buffers pointing to constant/stack
memory instead of malloc()ed data)
- buffer_append_strftime(): refactor buffer+strftime uses
- li_tohex(): no need for a buffer for binary-to-hex conversion:
the output data length is easy to predict
- remove "-Winline" from extra warnings: the "inline" keyword just
supresses the warning about unused but defined (static) functions;
don't care whether it actually gets inlined or not.

From: Stefan Bühler <[email protected]>

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2979 152afb58-edef-0310-8abb-c4023f1b3aa9

show more ...


# 4365bdbe 08-Feb-2015 Stefan Bühler <[email protected]>

Remove buffer_prepare_copy() and buffer_prepare_append()

* removed almost all usages of buffer as "memory" (without terminating
zero)
* refactored cgi variable name encoding

From: Stefan Bühler <

Remove buffer_prepare_copy() and buffer_prepare_append()

* removed almost all usages of buffer as "memory" (without terminating
zero)
* refactored cgi variable name encoding

From: Stefan Bühler <[email protected]>

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2977 152afb58-edef-0310-8abb-c4023f1b3aa9

show more ...


Revision tags: lighttpd-1.4.35
# b106513e 16-Feb-2014 Stefan Bühler <[email protected]>

[network] check return value of lseek()

From: Stefan Bühler <[email protected]>

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2953 152afb58-edef-0310-8abb-c4023f1b3aa9


Revision tags: lighttpd-1.4.34, lighttpd-1.4.33, lighttpd-1.4.32, lighttpd-1.4.31, lighttpd-1.4.30
# f434d514 22-Aug-2011 Stefan Bühler <[email protected]>

Limit amount of bytes we send in one go; fixes stalling in one connection and timeouts on slow systems.

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2801 152afb58-edef-0310-8a

Limit amount of bytes we send in one go; fixes stalling in one connection and timeouts on slow systems.

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2801 152afb58-edef-0310-8abb-c4023f1b3aa9

show more ...


Revision tags: lighttpd-1.4.29, lighttpd-1.4.28, lighttpd-1.4.27, lighttpd-1.4.26, lighttpd-1.4.25, lighttpd-1.4.24
# 22e8b456 11-Oct-2009 Stefan Bühler <[email protected]>

Fix header inclusion order, always include "config.h" before any system header

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2624 152afb58-edef-0310-8abb-c4023f1b3aa9


12