项目

通用

个人资料

操作

发布信息

  • 版本: 1.4.60
  • 上一版本: 1.4.59
  • 分支: 1.4
  • 状态: 稳定
  • 发布目的: 错误修复
  • 发布负责人: gstrauss
  • 发布日期: 2021-10-03

1.4.59 版本的重要变更

  • 提升性能,减少内存使用,修复错误

下载

亮点

  • 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_dbimod_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_rawuri_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] 在配置时缓存脚本对象
  • [核心] 将 backtraceassert 宏移动到 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-fastcgimod-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_poolconns 列表分离(#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.hmallopt()
  • [核心] 配置 mallopt(M_ARENA_MAX, 2)#3084
  • [核心] 定期 malloc_trim() 以释放内存(修复 #3084
  • [构建] 在构建中传播 HAVE_DLFCN_H
  • [核心] 在 $SERVER["socket"] 后配置 server.bindhost
  • [核心] TCP_CORKMEM_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 兼容性
  • [核心] 调整缩进以提高清晰度

外部参考

gstrauss3年多前 更新 · 1 次修订