操作
发布信息¶
- 版本: 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_deflatemod_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_headerAPI 减少字符串复制 - [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_file0 大小的情况 - [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_chunkAPI - [核心] 记录 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 兼容性
- [核心] 调整缩进以提高清晰度