操作
发布信息¶
- 版本: 1.4.60
- 上一版本: 1.4.59
- 分支: 1.4
- 状态: 稳定
- 发布目的: 错误修复
- 发布负责人: gstrauss
- 发布日期: 2021-10-03
1.4.59 版本的重要变更¶
- 提升性能,减少内存使用,修复错误
下载¶
- https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.60.tar.gz
- GPG 签名: https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.60.tar.gz.asc
- SHA256:
9c284107f8ed7dd3a8a25b06c6acfcf49ae2f19e66e384ebe51f7bc4dc57621c
- https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.60.tar.xz
- GPG 签名: https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.60.tar.xz.asc
- SHA256:
4bb1dd859e541a3131e5be101557d2e1195b4129d3a849a3a6fbd21fe1c946f0
- SHA256 校验和: https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.60.sha256sum
亮点¶
- HTTP/2 更流畅,内存使用更低(总体而言)
- HTTP/2 优化,更好地处理激进的客户端初始请求
- 减少内存占用;解决 glibc 的不良行为;jemalloc 更好
- mod_magnet lua 性能改进
- mod_dirlisting 性能改进和新的缓存选项
- mod_dirlisting、mod_ssi、mod_webdav 中极端情况的内存限制
- 后端连接 (connect())、写入 (write())、读取 (read()) 时间限制(独立于客户端超时)
- 如果时间出现大跳跃(嵌入式系统),lighttpd 将重启
- RFC7233 Range 支持所有非流式响应,而不仅仅是静态文件
行为变更¶
- 连接到后端现在默认有 8 秒超时(可配置)
未来计划的行为变更(预计 2022 年初)¶
- 平滑重启/关闭默认超时将从
0(无限/无超时)更改为 5 秒(或类似的非零时长)
通过以下方式配置替代选项:server.feature-flags += ("server.graceful-shutdown-timeout" => 5)
- lighttpd 对 libev 和 FAM 的(可选)依赖已被弃用。
lighttpd 事件循环和文件监控使用原生操作系统接口
除了在不常见的平台上。FAM 和 gamin 似乎已被废弃。
Linux 和 *BSD 上的包维护者
请从软件包构建中移除--with-libev
和--with-fam
lighttpd 在 Linux 上使用epoll()
,在 *BSD 上使用kqueue()
进行事件通知。
lighttpd 在 Linux 上使用inotify()
,在 *BSD 上使用kqueue()
进行文件监控。
https://wiki.lighttpd.net/Docs_ConfigurationOptions#Deprecated
mod_compress
已弃用;请使用mod_deflate
mod_compress
已被mod_deflate
取代
注意:mod_compress
配置选项可能会在未来的版本中移除mod_geoip
已弃用;请使用mod_maxminddb
注意:mod_geoip
将从未来的 lighttpd 版本中移除mod_authn_mysql
已弃用;请使用mod_authn_dbi
注意:mod_authn_mysql
将从未来的 lighttpd 版本中移除mod_mysql_vhost
已弃用;请使用mod_vhostdb_dbi
或mod_vhostdb_mysql
注意:mod_mysql_vhost
将从未来的 lighttpd 版本中移除mod_cml
已弃用;请使用mod_magnet
注意:mod_cml
将从未来的 lighttpd 版本中移除mod_flv_streaming
已弃用;(Adobe Flash Video (.flv))
(注意:可以用几行 Lua 代码和mod_magnet
替换)
(示例脚本flv-streaming.lua
发布于
https://redmine.lighttpd.ac.cn/projects/lighttpd/wiki/AbsoLUAtion
)
Adobe Flash 已弃用,现代客户端已移除对其的支持
1.4.59 版本的变更¶
- [meson] 将
with_zstd
添加到meson_options.txt
- [mod_magnet] 拒绝空字符串的
stat()
调用(修复 #3064) - [mod_magnet] 避免
atpanic
中的无限循环(修复 #3065) - [mod_magnet] 不在
pcall
之外调用luaL_error
(#3065) - [核心] 如果包含
Content-Length
,101 升级失败(修复 #3063) - [mod_gnutls,mod_mbedtls] 识别通用密码串
- [测试] 移除
lighttpd.conf
测试文件中的多余选项 - [mod_auth] 错误密码后关闭 HTTP/2 连接
- [构建] 修复 SCons
pkg-config
错误处理(修复 #3066) - [核心] 内联函数以解码 h2 帧编号(修复 #3067)
- [构建] gcc 和 clang 使用
-pipe
- [mod_mbedtls] 预处理包装
ssl_parse_client_hello
- [构建] 增加
configure.ac
消息以移除 FAM(#3068) - [核心] 允许
"*:80"
套接字规范中的'*'
- [核心] 重命名局部变量
- [核心] 将配置注册函数标记为冷函数
- [核心] 修复
-fsanitize=undefined
严格警告(修复 #3069) - [核心]
algo_hmac.[ch]
包装器(可移植性) - [mod_secdownload] 使用
algo_hmac.[ch]
- [mod_secdownload] 使用
http_auth_const_time_memeq()
- [autoconf] 将
ajp13
添加到构建消息 - [mod_auth] 如果摘要算法不支持,发送 401
- [mod_deflate] 不缓存 206 部分内容
- [核心]
chunkqueue_append_cq_range()
- [核心]
http_range.[ch]
RFC 7233 Range 处理 - [核心] RFC 7233 Range 处理非流式
- [TLS] 修复(损坏的)嵌套
$SERVER[]
配置导致的崩溃 - [核心] 忽略
server.event-handler = "libev"
- [mod_openssl] 使用更新的 openssl 3.0.0 接口
- [核心] 消除 coverity 警告
- [核心] 重命名
http_cgi_local_redir()
- [核心]
http_cgi.[ch]
CGI 接口 (RFC 3875) - [核心] 启动时保存解析的监听地址
- [核心]
http_cgi_encode_varname()
- [核心] 在
algo_hmac.c
中添加一些ifdefs
- [核心] 如果可用,使用
epoll_create1()
- [核心] 调整
stat_cache_get_entry()
条件 - [核心] _WIN32 只读
mmap()
、munmap()
实现 - [核心] 移除
stream.[ch]
- [多模块] 使用二进制
'|'
重建 ts - [核心] 如果 unix socket
connect()
延迟,检查EAGAIN
- [多模块] 内部使用优先选择单调时间
- [核心] 优化
buffer_urldecode_path()
- [mod_openssl] 如果是自签名证书,跳过证书链构建
- [mod_nss] 避免 NSS 因配置文件错误而崩溃
- [多模块] 内部使用优先选择单调时间
- [核心]
http_response_handle_cachable()
优化 - [核心] 修复
chunkqueue_small_resp_optim
部分读取 - [核心] 将
pcre_compile
推迟到配置解析之后 - [多模块] PCRE 使用
PCRE_STUDY_JIT_COMPILE
(修复 #2361) - [mod_dirlisting, mod_trigger_b4_dl] 使用键值对
- [多模块] 添加来自
gcc -Wsuggest-attribute=
的属性 - [mod_gnutls] 消除 clang 警告
- [核心]
http_response_physical_path_error()
- [多模块]
buffer_has_slash_suffix()
- [核心] 就地修改路径,检查路径信息
- [多模块] 优化基本类型,
buffer_extend()
- [多模块] 如果完成,不清除
physical.path
- [核心]
http_kv.[ch]
性能调优 - [核心] 移除
algo_splaytree.h
中不好的原型 - [多模块] 将
addtl funcs
属性标记为returns_nonnull
- [TLS] 即使时间是 1970 年也初始化 STEK(修复 #3075)
- [核心] 如果检测到时钟大幅跳跃则重启(#3075)
- [核心] 直接从
tmp_buf
复制字符串和长度 - [核心] 移动
Content-Type CGI hdr
的特殊情况 - [mod_ssi] 在 ssi plugin_data 中内联一些缓冲区
- [核心] 管道日志器启动时使用单调秒数
- [mod_cml] 使用
log_epoch_secs
中的缓存时间 - [mod_dirlisting] 限制大目录的缓冲区使用
- [多模块]
http_header
API 减少字符串复制 - [mod_userdir] 使用
stat_cache_path_isdir()
- [mod_indexfile] 减少基本路径的复制
- [TLS]
https_add_ssl_client_verify_err()
- [TLS]
SSL_CLIENT_S_DN_*
标签使用堆栈 - [核心]
buffer_append_strftime()
性能注解 - [mod_userdir] 使用双元素缓存
- [mod_magnet] 使用
http_chunk_*
API - [mod_accesslog] 重新格式化数字时间戳
- [mod_accesslog]
strftime %z
用于数字时间戳 - [mod_accesslog] 重新格式化数字时间戳代码
- [多模块]
strftime %F
和%T
- [mod_trigger_b4_dl] 每日
gdbm_reorganize
- [mod_status] 将大输出双缓冲到临时文件
- [mod_ssi] 共享代码以包装
strftime()
- [mod_ssi] 使用中间
chunkqueue
进行聚合 - [多模块] 复制常量字符串时传递长度
- [核心] 如果没有要编码的内容,则短路编码
- [构建] 检查
mempcpy()
- [核心]
buffer_append_*
聚合 - [核心]
config_vars_init()
- [多模块] 使用
buffer_append_*
聚合 - [核心] 定义
__attribute_nonnull__
- [核心] 将选定的
buffer.[ch]
函数属性标记为非空 - [核心] 将选定的
http_kv.[ch]
函数属性标记为非空 - [核心] 将
chunk.h
中的一些函数属性标记为冷 - [核心] 移除多余的检查
- [核心] 将调试路径标记为不太可能
- [核心] 忽略空头部,除非是伪头部
- [多模块]
buffer_copy_path_len2()
聚合 - [mod_dirlisting] 在子请求处理程序中处理目录
- [mod_dirlisting] 重构并保留状态
- [mod_dirlisting] 分段读取目录;减少阻塞
- [mod_dirlisting] 并行目录列表的上限
- [mod_dirlisting] 在 javascript 中解析查询字符串
- [mod_dirlisting]
dir-listing.cache
选项 - [mod_webdav]
webdav_log_xml_response()
- [mod_webdav] 在极端条件下限制内存使用
- [核心]
vector.h
微调 - [mod_proxy] 如果没有 Host 头,向后端发送 HTTP/1.0
- [构建] 修复 meson 中的 zstd 选项(修复 #3076)
- [多模块] 更多地重用
http_date_time_to_str()
- [TLS] 重命名
ssl.verifyclient.ca-*file
选项 - [mod_openssl] 如果 OpenSSL 版本低于 1.1.1,则发出错误跟踪
- [mod_webdav] 始终定义
webdav_mmap_file_chunk
- [mod_dirlisting] 如果包含文件失败,忽略错误
- [多模块] 消除 coverity 警告
- [scons] 链接 lighttpd 与 pcre 用于完全静态构建
- [scons] 链接 lighttpd 与 pcre 用于静态构建
- [核心] 如果没有打开的连接,在关机时退出 0
- [mod_nss] 将
TLSv1_3
定义为位标志 - [核心] 更新
ls-hpack
- [核心] 响应后丢弃一些 HTTP/2 DATA(修复 #3078)
- [mod_expires,mod_webdav] 修复截断的日期字符串
- [mod_expire] 接受没有复数 's' 的时间标签
- [mod_webdav] 在
webdav.opts
中接受替代语法 - [核心] 识别布尔值的
"enabled"
/"disabled"
- [mod_expire] 如果未找到 MIME 类型,则检查默认值
- [核心] 将
timegm()
实现内联到sys-time.h
中 - [mod_expire] 只向
>=HTTP/1.1
发送Cache-Control
- [mod_webdav] 消除严格编译器警告
- [核心] 重用代码来解析后端响应
- [核心] 统一包含
sys-time.h
- [mod_authn_file] 使用后擦除密码/摘要
- [TLS] ALPN h2 策略
- [核心] 如果匹配,容忍重复的数组配置值
- [多模块] 静态文件优化;重用缓存
- [mod_staticfile] 将冷路径移动到单独的函数
- [构建]
--with-nss
添加/usr/include/nspr4
的测试 - [核心]
li_base64_decode
类似于li_to_base64
- [核心] 将
li_base64_decode
标记为冷代码路径 - [核心]
li_to_base64
替代代码以添加填充 - [核心]
buffer_append_base64_encode_opt()
- [核心]
base64_charset
枚举只支持 2 个表 - [核心] 整合
li_to_base64
中的溢出检查 - [mod_auth] 在 Mac OS 上为
crypt()
包含unistd.h
- [核心] 紧缩
request_check_hostname()
中的代码 - [核心] 合并
http_response_send_file
0 大小的情况 - [mod_extforward] 共享
mod_extforward_bad_request
- [核心] 将
http_response_send_file()
标记为冷路径 - [核心] 改进 HTTP/2 在
max-request-size
下的行为 - [测试] 禁用 NSS 的 secdownload HMAC 测试
- [核心] 在 h2 升级检查之前检查 Upgrade
- [核心] 移除
buffer_is_equal_right_len()
- [核心]
buffer_is_equal_string -> buffer_eq_slen
- [核心] 将
http_response_config
中的冷路径标记出来 - [核心]
http_response_prepare() OPTIONS *, CONNECT
- [核心] 标记一些可能的热路径(更好的汇编)
- [核心] 简化
buffer_path_simplify()
- [核心] 移除
buffer_commit()
中多余的断言 - [核心] 消除 coverity 噪音
- [mod_auth] 在 *nix 上为
crypt()
包含unistd.h
- [cmake] 改进 cmake 对
timegm
的检测 - [cmake] 更新
src/config.h.cmake
- [核心] 调整
r->http_host
指针缓存 - [核心] 合并
uri_raw
和uri_clean
钩子 - [核心] 重新排序钩子枚举以获得更好的内存局部性
- [核心] 移除
max_conns
的冗余检查 - [多模块] 将
con->srv_socket
标记为 const 指针 - [核心] 在
network_server_handle_fdevent()
中接受 - [mod_*_dbi] 修复注释中
sqlite3_dbdir
的拼写错误 - [核心] 移除
HANDLER_UNSET
枚举值 - [核心] 添加从 stdin 读取配置文件的选项
- [mod_flv_streaming] 发送 FLV 前检查范围
- [mod_magnet] 使用
http_chunk_append_file_ref_range
- [核心] 范围检查
http_chunk_append_file_ref_range
- [核心] 移除一些(现在)未使用的
http_chunk
API - [核心] 记录 HTTP/1.0 的错误边界情况
- [核心] 修复通过信号杀死 worker 和关机的问题
- [核心] 存储
int*
指针到通用网关状态计数器 - [测试] 消除
test_request.c
中的 coverity 警告 - [核心] 更紧凑的 OS 事件轮询循环(更好的汇编)
- [核心] 如果
poll()
可用,则省略fdevent select()
代码 - [核心] 调整一些数组代码(更好的汇编)
- [核心] base64 编码向上取整以满足所需空间
- [核心] base64 编码,减少数据依赖
- [核心] 将 base64 编码合并到
li_base64_enc()
- [核心]
li_base64_dec()
每次处理 4 字节 - [核心] 从
base64_table
加载填充字符 - [核心] 移除
algo_splaytree
中的大小维护 - [核心] 移除打印配置中多余的计数
- [核心] 整合配置打印代码
- [核心] 将
data_{array,integer,string}
移动到array.c
- [核心] 如果需要,定义
__attribute_unused__
- [核心]
ck.[ch]
- C11 附录 K 包装器 - [多模块] 如果可用,使用线程安全的
strerror
- [多模块] 将
const time cmp funcs
移动到ck.[ch]
- [多模块] 重命名
safe_memclear() -> ck_memzero()
- [多模块]
http_auth_digest_hex2bin -> li_hex2bin
- [mod_auth,mod_vhostdb] 将辅助函数移动到模块
- [mod_auth*] 重命名
http_auth.* -> mod_auth_api.*
- [mod_vhostdb*] 重命名
http_vhostdb->mod_vhostdb_api
- [核心] 注释掉
ck_getenv_s()
(未使用) - [mod_secdownload] 在模块中包含
algo_hmac.c
- [核心] 使
insert_dup
成为可选的数组方法 - [核心] 从
array_insert_data_at_pos
返回条目 - [核心]
network_write
优化 - [核心]
network_write
优先使用writev()
而非write()
- [核心] 将
connection_handle_read_state
标记为热点案例 - [核心]
buffer_commit()
优化;更好的汇编 - [TLS]
write_cq_ssl
推迟remove_finished_chunks
- [核心]
execve
后比较整个"/bin/sh" "-c"
- [核心] 减少
http_cgi_headers()
中的重复工作 - [核心]
array_match_value_prefix()
代码重用 - [构建] 针对 Mac OS X 上 autotools 的调整
- [构建] 自动更新;仍与 autoconf 2.60 兼容
- [构建] MacOS 链接器兼容性
- [核心]
http_header_hkey_get()
性能(更好的汇编) - [TLS] 如果时钟回拨,重置
stek_rotate_ts
- [核心]
sock_addr_from_buffer_hints_numeric
未使用 - [核心] 响应头写入调整(更好的汇编)
- [核心] 调整 lshpack 的 hdr 名称缓冲区使用
- [核心] 注释掉
http_etag_remix
中未使用部分 - [核心] 内联
fam_dir_entry
缓冲区 'name' 成员 - [多模块] 减少冗余的 NULL 缓冲区检查
- [核心] 启动时计算后端主机
gw_hash
- [核心]
gw_host_get()
注释掉开发调试 - [核心]
request_config_reset()
- [mod_magnet] 在缓存中内联名称和 etag 缓冲区
- [mod_magnet] 同步脚本加载与
stat_cache
- [核心] 在
stat_cache_get_entry_open()
中清除 etag - [mod_auth] 合并一些重复代码;代码重用
- [核心] 将 iovec 包装器添加到
sys-crypto-md.h
- [核心]
li_base64_dec()
- [多模块] 使用
<algo>_iov()
摘要函数 - [mod_auth]
mod_auth_digest_get()
- [mod_auth]
mod_auth_algorithm_parse()
带有算法长度 - [mod_authn_dbi] 在转义之前复制字符串
- [mod_auth] 重构
mod_auth_check_digest()
- [mod_auth] 重构
mod_auth_check_basic()
- [构建] 查找
memcpy
并定义HAVE_MEMCPY
- [核心]
buffer_path_simplify()
更快的路径 - [核心] 减少
http_request_parse_header
中的memcmp
- [构建] 在 Solaris 上查找
port.h
,而不是sys/port.h
- [核心]
buffer_realloc()
使用 2 的幂次重新分配 - [核心] 小写
r->http_host, r->uri.authority
- [多模块]
buffer_copy_string_len_lc()
- [mod_magnet] 在配置时缓存脚本对象
- [核心] 将
backtrace
和assert
宏移动到ck.[ch]
- [核心] 为初始请求池分配
srv->conns
- [mod_extforward] 内联更多数据结构
- [mod_access] 移除多余的跟踪
- [多模块] 减少
BUFFER_INTLEN_PTR
的使用 - [多模块] 在
con->dst_addr_buf
中内联结构体 - [核心] 重置长 URL 中的大路径缓冲区
- [核心] 在 docroot 钩子后构建文件路径
- [核心] 避免内联
buffer_eq_icase_ssn()
- [核心] 排列
gw_proc
成员以进行打包和使用 - [核心] 排列
gw_host
成员以进行打包和使用 - [mod_proxy]
proxy_response_headers
提前加载 v - [核心]
proxy_create_env()
微调 - [核心]
write_all()
循环更简单;更好的汇编 - [核心]
http_date_time_append()
便利宏 - [核心] 减少
http_chunk.c
中过多的 cc 内联 - [核心]
config_check_cond_nocache
中的const buffer *
- [核心] 启动时解析
$HTTP["remote-ip"] CIDR mask
- [核心] 减少
$HTTP["host"]
比较字符串扫描 - [多模块]
http_method_buf()
- [核心]
config_check_cond_nocache() xor
返回码 - [核心] 重构
config_check_cond_nocache()
流程 - [mod_deflate] 使用
deflate.allowed-encodings
顺序 - [mod_deflate] 使用
ZSTD_c_strategy
带有压缩级别 - [mod_deflate]
deflate.params
每个编码器参数 - [mod_deflate] 默认使用
brotli quality 5
- [mod_deflate] 改进
compress.*->deflate.*
重映射 - [mod_auth] 检测并跳过 BWS(错误空白字符)
- [核心] 如果在明文端口上接收到 TLS,更好的跟踪
- [核心] 用
buffer_eq_icase_ssn
替换strncasecmp
- [测试] 在 HTTP If 条件中使用生成的日期
- [测试] 更新
t/test_request.c
- [测试] 将测试从
request.t
移动到test_request.c
- [测试]
t/test_mod_staticfile
- [测试] 使用
tests/lighttpd.conf
合并*.t
- [测试] 使用
tests/condition.conf
合并*.t
- [测试] 加速
mod-fastcgi
和mod-scgi
测试 - [核心] 在
lighttpd -V
中报告 Y2038 支持 - [autoconf] 为 lfs 添加
AC_SYS_LARGEFILE
- [多模块] Y2038 32 位带符号
time_t
缓解措施 - [mod_deflate] 使用
http_header_str_contains_token
- [核心] 调整
http_response_process_headers()
- [核心] 如果可用,使用
CLOCK_MONOTONIC_COARSE
- [核心] 64 位使用
log_clock_gettime->clock_gettime
- [核心] Y2038: 在 32 位 glibc 上使用
_TIME_BITS=64
- [核心] 在
first.h
中定义_DEFAULT_SOURCE
- [构建] 在 CMake 和 meson 中检查
sys/filio.h
- [核心] 消除编译器警告
- [mod_openssl]
mod_sockproxy
不会出现 ALPN 致命错误(修复 #3081) - [核心] 使缺失
mod_deflate
不成为致命错误 - [核心] 存储上次读写后端套接字的时间
- [核心]
gw_backend_error()
共享代码 - [核心] 后端连接、写入、读取超时(修复 #3086)
- [文档] https://wiki.lighttpd.net/Docs_Performance
- [核心] 调整缓冲区合并以减少内存
- [核心]
chunkqueue_append_buffer
总是清除缓冲区 - [核心]
http_response_append_{buffer,mem}()
- [核心] 改进次优后端写入的处理
- [核心]
http_response_read()
指示响应完成 - [mod_cgi]
cgi.limits "read-timeout" "write-timeout"
(#3086) - [核心] 澄清
gw_backend.c
中的错误消息 - [核心] 设置最小
srv->max_fds = 32
(健全性检查) - [核心] 调整服务器过载检查
- [核心] 当
fdwaitqueue
列表为空时释放 - [核心] 启动时调整
srv->srvconf.max_conns
- [核心]
conns_pool
与conns
列表分离(#3084) - [构建] 更新
ax_prog_cc_for_build.m4
- [核心] 添加 wolfssl 特定的包含
- [核心] 重命名
srv->max_conns > srv>lim_conns
- [核心] 将
srv->conns
更改为双向链表 - [核心] 将
con joblist
更改为单向链表 - [核心] 移除
connection_list_append()
- [核心] 每 64 秒清除请求、连接池(#3084)
- [mod_wolfssl]
wolfSSL_sk_X509_NAME_push
变更 - [核心] 澄清错误消息
- [核心] 减少冷函数的优化内联
- [核心] 移除
HANDLER_WAIT_FOR_FD
- [mod_cgi] 重用块缓冲区
- [mod_cgi] 进程列表使用链表
- [mod_uploadprogress] 请求列表使用
splay_tree
- [多模块] 移除未使用的
base.h
包含 - [mod_indexfile] 分段为子程序
- [mod_extforward] HAProxy PROXY 环境变量
PP2_UNIQUE_ID
- [mod_magnet] 重用 lighty lua 表
- [核心]
li_hmac_sha512()
- [mod_magnet] 向 lua 暴露 md 和 hmac 函数
- [mod_magnet] 允许修改请求头
- [mod_magnet]
lighty.stat
现在返回 userdata 对象 - [mod_magnet] 保护和控制 lighty 表修改
- [mod_magnet] 向 lua 暴露编/解码字符串函数
- [mod_magnet] 通过
strlen
,然后strcmp
查找 env id - [核心] 重用一些冷重复 hdr 匹配代码
- [核心] 在跟踪中使用模块名而不是
mod_gw
- [mod_magnet]
lighty.r.*
接口请求 - [核心] 连接开始时拒绝过多的 h2 流(修复 #3093)
- [mod_magnet]
lighty.c.cookie_tokens
- [mod_magnet]
lighty.c.readdir
- [mod_magnet] nil 使用空字符串(不恐慌)
- [mod_magnet] 重命名
magnet_cgi_
为magnet_envvar_
- [mod_magnet] 重置 URI 组件的配置缓存
- [mod_magnet] 重置远程地址的配置缓存
- [核心]
sock_addr_set_port()
- [mod_magnet] 远程端口和服务器端口的属性
- [mod_magnet] 检测
MAGNET_RESTART_REQUEST
循环 - [mod_magnet] 在响应开始时忽略 1xx 返回
- [mod_echo] 测试模块以回显请求作为响应
- [核心] base64url 填充字符为
'='
;从'.'
更改 - [mod_cgi] 改进 CGI 卸载
- [mod_openssl] 默认禁用客户端重新协商
- [核心]
log_error_multiline()
- [测试]
t/test_mod_indexfile
- [测试]
IO::Socket::INET->new( Timeout => 1 )
- [mod_indexfile] 使用缓冲区路径函数更新路径
- [测试] 将
tests/docroot/www
内容上移一级 - [构建] 查找
malloc.h
和mallopt()
- [核心] 配置
mallopt(M_ARENA_MAX, 2)
(#3084) - [核心] 定期
malloc_trim()
以释放内存(修复 #3084) - [构建] 在构建中传播
HAVE_DLFCN_H
- [核心] 在
$SERVER["socket"]
后配置server.bindhost
- [核心]
TCP_CORK
与MEM_CHUNK
然后FILE_CHUNK
- [核心] 移除
server.upload-temp-file-size
限制 - [核心] 暴露
ck_bt()
用于调试 - [核心] 更改回溯格式以将地址放在前面
- [核心] 减少 main() 中的堆栈使用
- [核心] 如果溢出到临时文件,则写入所有 cq
MEM_CHUNK
- [核心]
realloc
缓冲区 2 的幂次大小 + 1 用于'\0'
- [mod_cgi]
cgi.limits "tcp-fin-propagate" => "SIG"
- [核心] 整合更多
gw_host
,gw_proc
初始化代码 - [核心] 将更多网关维护代码标记为冷
- [核心] 减少
gw_spawn_connection()
中的等待时间 - [核心] 移除每个后端上冗余的
waitpid()
- [多模块] 消除 coverity 警告
- [构建] 在 FreeBSD 上定义
rsize_t
- [核心] 消除 coverity 警告
- [测试] 在 CI 测试期间跳过时间敏感测试
- [核心] 后端去块化后清除缓冲区
- [核心] 更新关于
server.max-write-idle
的注释 - [核心]
fdlog.[ch]; fdevent_*_logger_* -> fdlog_*
- [多模块] 文件和管道日志器去重(修复 #3101)
- [多模块] 优先使用
r->tmp_buf
而非p->tmp_buf
- [核心]
log_*error*()
共享临时缓冲区 - [核心] 仅在阻塞时拒绝过多初始流(修复 #3100)
- [核心] 消除 coverity 警告
- [核心] 拒绝尾部中的 HTTP/2 伪头部(#3102)
- [核心] 移除
h2_recv_headers()
中的冗余检查 - [核心] 减少后端过大的内存分配
- [核心] 读取前超时后 HTTP/2 GOAWAY(修复 #3102)
- [核心] 默认后端
"connect-timeout"
为 8(#3086) - [核心] 读取前超时后 HTTP/2 GOAWAY(#3102)
- [核心] 标记属性
malloc
,返回非空 - [核心] 独立的
FILE_CHUNK
重用内存池 - [核心] 在超大块列表中保留最大块
- [核心] 改进后端块缓冲区重用
- [多模块] 后端读取字节的内部控制
- [核心] 选项:错误日志高精度时间戳
- [核心] 在块缓冲区中创建临时文件名
- [核心]
chunkqueue_get_append_newtempfile()
- [核心] 移除临时文件块的冗余检查
- [多模块]
fdevent_mkostemp()
- [构建] 检查
pread()
、pwrite()
、splice()
- [多模块] _WIN32
fdevent_pipe_cloexec()
- [核心] _WIN32
fdevent_mkostemp()
实现 - [多模块] 检查功能标志函数;代码重用
- [多模块] 避免
chunkqueue
中出现空块 - [核心] 将数据从后端
splice()
到临时文件 - [核心] 修复后端分块解码(#3044, #3046)
- [核心] 移除关于
r->gw_dechunk
的过时注释 - [核心] 改进后端块缓冲区重用
- [mod_cgi] 改进后端块缓冲区重用
- [核心] 禁用带授权器的流式响应(修复 #3106)
- [多模块] 当没有可用证书时,澄清错误消息
- [核心] 如果是 spawn,则禁用
server.graceful-restart-bg
- [测试] 在
fcgi-responder
中忽略 SIGINT, SIGUSR1 - [核心] 限制 HTTP/2 响应帧数据的大小
- [核心] 修复
h2_send_cqdata()
中的拼写错误 - [核心] 使用
pread()
跳过lseek()
- [核心]
h2_send_cqdata()
返回发送了多少数据 - [核心] 每个流最多允许 32k 数据帧
- [核心] 限制初始响应头后端读取
- [核心] 当为 HTTP/2 帧化时,将文件读入内存
- [核心]
chunkqueue_mmap_chunk_len()
用于代码重用 - [核心]
chunkqueue_peek_data()
mmap 实验 - [核心] 消除 coverity 警告
- [核心] 针对不同平台/编译器的可移植性调整
- [核心] 修复后端分块解码(#3044, #3046)
- [文档] 更新配置文件
- [mod_openssl] boringssl 兼容性
- [核心] 调整缩进以提高清晰度