项目

通用

个人资料

操作

发布信息

  • 版本: 1.4.56
  • 上一版本: 1.4.55
  • 分支: 1.4
  • 状态: 稳定版
  • 发布目的: 错误修复
  • 发布经理: gstrauss
  • 发布日期: 2020-11-29

1.4.55版本的重要变更

HTTP/2, TLS 库选项, brotli, 错误修复

下载

亮点

  • HTTP/2 支持
    • 必须在 lighttpd 1.4.56 的 lighttpd.conf 中启用;
      在未来的版本中可能会默认启用
    • server.feature-flags += ("server.h2proto" => "enable", "server.h2c" => "enable")
  • TLS 库选项: OpenSSL, mbedTLS, wolfSSL, GnuTLS, NSS
    • mod_openssl (现有)
    • mod_mbedtls (实验性)
    • mod_wolfssl (实验性)
    • mod_gnutls (实验性)
    • mod_nss (实验性)
  • TLS OCSP 装订
    (mbedTLS 除外; mbedTLS 当前不支持)
  • TLS 会话票据密钥轮换控制
    (NSS 除外; NSS 中有 API 限制)
  • mod_deflate brotli 支持
  • mod_proxy 向后端发送 HTTP/1.1 请求 (从 HTTP/1.0 更改)
  • 支持后端 (脚本) 生成的 103 Early Hints (RFC 8297)
  • 平滑重启选项,用于转移监听文件描述符 (暂停时间最短)
    • server.systemd-socket-activation = "enable"
    • server.feature-flags += ("server.graceful-restart-bg" => "enable", "server.graceful-shutdown-timeout" => "15")

行为变更

  • mod_openssl
    • 默认 MinProtocol TLSv1.2
      TLSv1 和 TLSv1.1 已弃用,不再受主流浏览器支持。
      https://news.netcraft.com/archives/2020/03/03/browsers-on-track-to-block-850000-tls-1-0-sites.html
      如果需要先前的行为,请配置
      ssl.openssl.ssl-conf-cmd = ("MinProtocol" => "TLSv1")
      如果使用 openssl <= 1.0.2 (生命周期结束)
      ssl.openssl.ssl-conf-cmd = ("Protocol" => "-ALL, TLSv1, TLSv1.1, TLSv1.2")
    • (内部) TLS 会话缓存默认禁用,
      已被 lighttpd 强大的 TLSv1.2 会话票据支持取代
      如果需要向后兼容性
      server.feature-flags += ("ssl.session-cache" => "enable")
    • (内部) openssl 为每个 SSL_CTX 创建一个会话票据加密密钥。
      lighttpd 1.4.56 及更高版本为 lighttpd 服务器 (跨所有 SSL_CTX) 分配单个会话票据加密密钥
      以保持一致性。
    • ssl.ca-dn-file 的行为变更 (不常见); 适用于客户端
      证书验证和 ssl.ca-dn-file (不常见)
      如果客户端证书验证已启用
      (ssl.verifyclient.activate = "enable"),
      所有用于客户端证书验证的 CA 都必须存在于
      ssl.ca-file 中。这是启用客户端证书
      验证时的典型用例。(可选) ssl.ca-dn-file 中的证书
      用于在服务器发送客户端证书请求时向客户端发送颁发者名称。
      这些名称由客户端用于
      证书选择,服务器要求客户端发送的
      证书由 ssl.ca-dn-file 中的一个主题
      颁发。
      (之前的行为是将 ssl.ca-file 和 ssl.ca-dn-file 合并用于受信任的 CA。
      新行为要求所有受信任的 CA 都列在 ssl.ca-file 中,
      并将子集复制到 ssl.ca-dn-file 中以指定允许的
      客户端证书颁发者。)
  • mod_deflate: 构建中默认禁用 bzip2 支持
    • (使用 ./configure --with-bzip2 启用)
      bzip2 Content-Encoding 不受广泛支持
      优先构建 --with-brotli
      brotli Content-Encoding 比 bzip2 受更广泛的支持

未来计划的行为变更

  • HTTP/2 支持将在未来版本中默认启用
  • 平滑重启/关闭默认超时将从
    0 (无限/无超时) 变为 5 秒 (或类似非零时间)
    配置替代选项:
    server.feature-flags += ("server.graceful-shutdown-timeout" => 5)
  • 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 版本中移除

1.4.55版本变更

  • [core] 性能: 请求处理
  • [core] http_header_str_contains_token()
  • [mod_flv_streaming] 解析查询字符串而不复制
  • [mod_evhost] 使用局部数组分割值
  • [core] 移除 srv->split_vals
  • [core] 将 User-Agent 添加到 http_header_e 枚举
  • [core] 在 struct connection 中存储 struct server *
  • [core] 使用函数返回值指示头部读取完成
  • [core] 用赋值替换 connection_set_state
  • [core] 不将 srv 传递给 HTTP 头部解析函数
  • [core] 冷区代码 buffer_string_prepare_append_resize()
  • [core] chunkqueue_compact_mem()
  • [core] connection_chunkqueue_compact()
  • [core] 在请求中传递 con,而不是 srv 和 con
  • [core] 减少 struct parse_header_state 的使用
  • [core] 性能: 使用 \n 偏移量解析 HTTP 头部
  • [core] 无需将 srv 传递给 connection_set_state
  • [core] 性能: connection_read_header_more()
  • [core] 性能: connection_read_header_hoff() 热区代码
  • [core] 内联 connection_read_header()
  • [core] 将 ptr 传递给 http_request_parse()
  • [core] request.c 原型中更多的 'const'
  • [core] 处理 alnum 或 - 字段名的常见情况
  • [mod_extforward] 简化代码: 使用 light_isxdigit
  • [core] 性能: array.c 性能增强
  • [core] 将一些 data_* 函数标记为冷区代码
  • [core] http_header.c 内部内联函数
  • [core] 移除未使用的 array_reset()
  • [core] 在 base.h 中优先使用 uint32_t 而非 size_t
  • [core] struct buffer 大小使用 uint32_t
  • [core] 移除 struct server 中未使用的成员
  • [core] 清除 request.headers 的短路路径
  • [core] 键值列表中数组键非空
  • [core] 保持 a->data[] 有序; 移除 a->sorted[]
  • [core] attribute_returns_nonnull
  • [core] 区分 array_get_* 用于只读和读写
  • [core] (const buffer *) 在 (struct burl_parts_t) 中
  • [core] con->server_name 使用 (const buffer *)
  • [core] 性能: 使用 memcpy() 初始化 con->conf
  • [core] 减少 config_setup_connection() 的运行次数
  • [core] 隔离 data_config.c, vector.c
  • [core] 将 con->conditional_is_valid 视为位字段
  • [core] const array 上的 http_header_hkey_get()
  • [core] 内联缓冲区作为 DATA_UNSET 键的一部分
  • [core] *_patch_connection() 的内联缓冲区键
  • [core] 来自 array_get_element_klen 的 (data_unset *)
  • [core] 内联缓冲区作为 data_string 值的一部分
  • [core] 为 http_header_*_get() 的调用者添加 const
  • [core] 内联数组作为 data_array 值的一部分
  • [core] data_config 中的 const char *op
  • [core] data_config 中的缓冲区字符串
  • [core] 简化 config_check_cond()
  • [core] 保持 a->data[] 有序 (还原)
  • [core] 数组 a->sorted[] 为指针而非位置
  • [core] 将头部和 env 数组内联到 con
  • [mod_accesslog] 避免解析 cookie 值时分配内存
  • [core] 更简单的 config_check_cond()
  • [mod_redirect,mod_rewrite] 存储 context_ndx
  • [core] struct plugin 中的 const char *name
  • [core] srv->plugin_slots 作为紧凑列表
  • [core] 重新排列 server_config, server 成员
  • [core] 宏 CONST_LEN_STR 和 CONST_STR_LEN
  • [core] struct plugin_data_base
  • [core] 改进条件缓存性能
  • [core] config_plugin_values_init() 新接口
  • [mod_access] 使用 config_plugin_values_init()
  • [core] 来自 strftime_cache_get() 的 (const buffer *)
  • [core] 将 config_setup_connection 移动到 connections.c
  • [core] 在配置文件解析中使用 (const char *)
  • [mod_staticfile] 使用 config_plugin_values_init()
  • [mod_skeleton] 使用 config_plugin_values_init()
  • [mod_setenv] 使用 config_plugin_values_init()
  • [mod_alias] 使用 config_plugin_values_init()
  • [mod_indexfile] 使用 config_plugin_values_init()
  • [mod_expire] 使用 config_plugin_values_init()
  • [mod_flv_streaming] 使用 config_plugin_values_init()
  • [mod_magnet] 使用 config_plugin_values_init()
  • [mod_usertrack] 使用 config_plugin_values_init()
  • [mod_userdir] 将策略从 userdir 路径构建中分离
  • [mod_userdir] 使用 config_plugin_values_init()
  • [mod_ssi] 使用 config_plugin_values_init()
  • [mod_uploadprogress] 使用 config_plugin_values_init()
  • [mod_status] 使用 config_plugin_values_init()
  • [mod_cml] 使用 config_plugin_values_init()
  • [mod_secdownload] 使用 config_plugin_values_init()
  • [mod_geoip] 使用 config_plugin_values_init()
  • [mod_evasive] 使用 config_plugin_values_init()
  • [mod_trigger_b4_dl] 使用 config_plugin_values_init()
  • [mod_accesslog] 使用 config_plugin_values_init()
  • [mod_simple_vhost] 使用 config_plugin_values_init()
  • [mod_evhost] 使用 config_plugin_values_init()
  • [mod_vhostdb*] 使用 config_plugin_values_init()
  • [mod_mysql_vhost] 使用 config_plugin_values_init()
  • [mod_maxminddb] 使用 config_plugin_values_init()
  • [mod_auth*] 使用 config_plugin_values_init()
  • [mod_deflate] 使用 config_plugin_values_init()
  • [mod_compress] 使用 config_plugin_values_init()
  • [core] 如果 xdocroot 为 NULL,则添加 xsendfile* 检查
  • [mod_cgi] 使用 config_plugin_values_init()
  • [mod_dirlisting] 使用 config_plugin_values_init()
  • [mod_extforward] 使用 config_plugin_values_init()
  • [mod_webdav] 使用 config_plugin_values_init()
  • [core] 在 pcre_keyvalue_buffer 中存储附加数据
  • [mod_redirect] 使用 config_plugin_values_init()
  • [mod_rewrite] 使用 config_plugin_values_init()
  • [mod_rrdtool] 使用 config_plugin_values_init()
  • [multiple] gw_backends config_plugin_values_init()
  • [core] config_get_config_cond_info()
  • [mod_openssl] 使用 config_plugin_values_init()
  • [core] 使用 config_plugin_values_init()
  • [core] 将更多配置逻辑收集到 configfile.c
  • [core] config_plugin_values_init_block()
  • [core] gw_backend config_plugin_values_init_block
  • [core] 移除旧的 config_insert_values_*() 函数
  • [multiple] plugin.c 处理通用 FREE_FUNC 代码
  • [core] 运行所有触发器和 sighup 处理程序
  • [mod_wstunnel] 将 DEBUG_LOG 更改为使用 log_error()
  • [core] stat_cache_path_contains_symlink 使用 errh
  • [core] 隔离 data_config, configfile.h 的使用
  • [core] 将条件缓存与条件匹配分离
  • [mod_auth] http_auth_require_t 中的内联数组
  • [core] array_init() 的初始大小参数
  • [core] gw_exts_clear_check_local()
  • [core] gw_backend 减少指针追逐
  • [core] connection_handle_errdoc() 独立函数
  • [multiple] 优先使用 (connection *) 而非 (srv *)
  • [core] 在栈上创建 HTTP 块头部
  • [multiple] 连接钩子不再获取 (srv *)
  • [multiple] plugin_stats 数组
  • [core] 在 fionread 之前读取固定大小的块
  • [core] 默认块大小 8k (原为 4k)
  • [core] 在 gw_backend 中传递 con 而非 srv
  • [core] log_error_multiline_buffer()
  • [multiple] 减少 srv->cur_ts 的直接使用
  • [multiple] 外部 log_epoch_secs
  • [multiple] 减少 srv->errh 的直接使用
  • [multiple] stat_cache 单例
  • [mod_expire] 将配置解析为结构化数据
  • [multiple] 通用配置数组类型检查
  • [multiple] 将 r 重命名为 rc rv rd wr 以示区别
  • [core] (次要) config_plugin_keys_t 数据打包
  • [core] log_error_st errh 中的内联缓冲区
  • [multiple] 将 srv->tmp_buf 存储在 tb 变量中
  • [multiple] 消除 clang 编译器警告
  • [core] http_status_set_error_close()
  • [core] http_request_host_policy 与 http_parseopts
  • [multiple] con->proto_default_port
  • [core] 在 (log_error_st *) 中存储日志文件名
  • [core] 分离 log_error_open* 函数
  • [core] fdevent 使用 uint32_t 而非 size_t
  • [mod_webdav] 大缓冲区复用
  • [mod_accesslog] 在 8k 大小处刷新文件日志缓冲区
  • [core] 在使用处包含 settings.h
  • [core] mtime_cache 的静态缓冲区
  • [core] 检查请求方法的便利宏
  • [core] 支持多个错误日志
  • [multiple] 省略将 srv 传递给 fdevent_handler
  • [core] 移除 fdevent_fcntl_set_nb* 的未使用参数
  • [core] 稍微简化 server_(over)load_check()
  • [core] 隔离 fdevent 子系统
  • [core] 隔离 stat_cache 子系统
  • [core] 移除未使用的 base.h 包含
  • [core] 每 64 秒重启一次死亡的管道日志记录器
  • [mod_webdav] 如果可用,使用 copy_file_range()
  • [core] 性能: 缓冲区复制和追加
  • [core] 将部分 srv->srvconf 复制到 con->conf
  • [core] 将 keep_alive 标志移动到 request_st
  • [core] 将 scheme 端口传递给 http_request_parse()
  • [core] 在 request.c 中传递 http_parseopts
  • [core] 将 specific_config 重命名为 request_config
  • [core] 将 request_st, request_config 移动到 request.h
  • [core] 将 (request_st *) 传递给 request.c 函数
  • [core] 移除未使用的 request_st 成员 'request'
  • [core] 将 content_length 重命名为 reqbody_length
  • [core] t/test_request.c 使用 (request_st *)
  • [core] http_header_**_get() 中的 (const connection **)
  • [mod_accesslog] log_access_record() 格式化日志记录
  • [core] 将请求开始时间戳移动到 (request_st *)
  • [core] 移动额外的请求特定结构成员
  • [core] 移动额外的请求特定结构成员
  • [core] 将 plugin_ctx 移动到 (request_st *)
  • [core] 移动额外的请求特定结构成员
  • [core] 将请求状态移动到 (request_st *)
  • [core] 在 p->data 中存储 (plugin *)
  • [core] 存储 subrequest_handler 而非模式
  • [multiple] 复制小结构体而不是 memcpy()
  • [multiple] 拆分 con, request (非常大的更改)
  • [core] r->uri.path 总是设置,尽管可能为空字符串
  • [core] C99 对某些基本函数的限制
  • [tests] 在 test_mod_* 中禁用配置函数
  • [tests] t/test_mod_userdir
  • [core] 在 handle_request 函数中分派处理程序
  • [core] http_request_parse_target()
  • [mod_magnet] 使用 "uri.path-raw" 修改 r->target
  • [core] 移除 r->uri.path_raw; 按需生成
  • [core] http_response_comeback()
  • [core] http_response_config()
  • [tests] 使用 buffer_eq_slen() 进行字符串比较
  • [core] http_status_append() 短路 200 OK
  • [core] 将一些 chunk.c 函数标记为 pure
  • [core] 在 http_header.[ch] 中使用 uint32_t
  • [core] 性能: 优化某些热区代码
  • [core] 在行尾之前解析头部标签
  • [doc] 在 doc/outdated/ssl.txt 中添加维基链接
  • [doc] src/t/README
  • [mod_auth] "nonce_secret" 选项用于验证 nonce (修复 #2976)
  • [build] 修复 MacOS X Tiger 上的构建问题
  • [doc] lighttpd.conf: lighttpd 选择事件处理程序
  • [config] 如果 server.tag 仅含空格,则设为空
  • [mod_proxy] 使用 HTTP/1.1 分块传输流请求 (修复 #3006)
  • [multiple] 更正注释中的拼写错误
  • [multiple] 修复 32 位和 powerpc 上的某些 cc 警告
  • [tests] 修复没有 php-cgi 的 mod-fastcgi 中的跳过计数
  • [multiple] ./configure --with-nettle 以使用 Nettle
  • [core] 定义 FD_CLOEXEC 时跳过多余的 close()
  • [mod_cgi] 移除设置 FD_CLOEXEC 的冗余调用
  • [core] 如果 stat_cache_get_entry 没有 / 则返回 EINVAL
  • [mod_webdav] 如果未定义 PATH_MAX 则定义它
  • [mod_accesslog] 处理格式中的反斜杠转义
  • [mod_openssl] 如果 ALPN acme-tls/1 则禁用证书验证
  • [core] 在 openssl RAND_pseudo_bytes() 之前添加种子
  • [mod_mbedtls] mbedTLS 作为 TLS 选项
  • [core] 优先使用 getxattr() 而非 get_attr()
  • [multiple] 与 ctypes 一起使用 *(unsigned char *)
  • [mod_openssl] 除非调试,否则不记录 ECONNRESET
  • [mod_openssl] SSL_R_UNEXPECTED_EOF_WHILE_READING
  • [mod_gnutls] GnuTLS 作为 TLS 选项 (修复 #109)
  • [mod_openssl] 轮换会话票据加密密钥
  • [mod_openssl] 在 1.0.2+ 中从回调设置证书 (修复 #2842)
  • [mod_openssl] 在 1.0.2+ 中从回调设置链 (#2842)
  • [core] 严格按照 RFC 解析 Content-Length
  • [build] 将 ./configure --help 指向支持论坛
  • [core] 更严格地解析数字
  • [multiple] 为某些模块顶部添加摘要
  • [core] sys-crypto-md.h 带有内联消息摘要函数
  • [mod_openssl] 如果设置,在 SNI 后启用预读
  • [mod_openssl] 对已弃用选项发出警告
  • [mod_openssl] 如果可用,使用 SSL_OP_NO_RENEGOTIATION
  • [mod_openssl] 为 ALPN 使用 openssl 功能定义
  • [mod_openssl] 更新默认 DH 参数
  • [core] _WIN32 上的 SecureZeroMemory()
  • [core] 安全的 memset 调用通过 volatile 进行 memset()
  • [doc] 更新 doc/config/modules.conf 中的注释
  • [core] 更精确地检查请求流标志
  • [mod_openssl] 轮换会话票据加密密钥
  • [mod_openssl] ssl.stek-file 指定加密密钥
  • [mod_mbedtls] ssl.stek-file 指定加密密钥
  • [mod_gnutls] ssl.stek-file 指定加密密钥
  • [mod_openssl] 禁用会话缓存; 优先使用票据
  • [mod_openssl] 与 LibreSSL 兼容
  • [mod_openssl] 与 WolfSSL 兼容
  • [mod_openssl] 设置 SSL_OP_PRIORITIZE_CHACHA
  • [mod_openssl] 将 SSL_CTX 曲线配置移动到新函数
  • [mod_openssl] 替代 TLS 库的基本 SSL_CONF_cmd
  • [mod_openssl] OCSP 装订 (修复 #2469)
  • [TLS] cert-staple.sh - 刷新 OCSP 响应 (#2469)
  • [mod_openssl] 与 BoringSSL 兼容
  • [mod_gnutls] 覆盖 GnuTLS 优先级的选项
  • [mod_gnutls] OCSP 装订 (#2469)
  • [mod_extforward] 模块顺序的配置警告
  • [mod_webdav] 将 webdav.opts 存储为位标志
  • [mod_webdav] 限制 webdav_propfind_dir() 递归
  • [mod_webdav] unsafe-propfind-follow-symlink 选项
  • [mod_webdav] webdav.opts "propfind-depth-infinity"
  • [mod_openssl] 检测标记为 OCSP Must-Staple 的证书
  • [mod_gnutls] 检测标记为 OCSP Must-Staple 的证书
  • [mod_openssl] 默认设置为 MinProtocol TLSv1.2
  • [mod_nss] NSS 作为 TLS 选项 (修复 #1218)
  • [core] fdevent_load_file() 共享代码
  • [mod_openssl,mbedtls,gnutls,nss] fdevent_load_file
  • [core] 如果 s->socket_perms chmod() 失败则报错
  • [mod_openssl] 优先使用一些 WolfSSL 本地 API
  • 消除 clang 分析器 scan-build 警告
  • [core] uint32_t 对于路径名足够大
  • [mod_mysql_vhost] 已弃用; 请使用 mod_vhostdb_mysql
  • [core] splaytree.h 中的 splaytree_djbhash() (重用)
  • [cmake] 更新 src/t/test_* 的依赖
  • [cmake] 更新 src/t/test_* 的依赖
  • [build] 从构建中移除 tests/mod-userdir.t
  • [build] 修复 src/Makefile.am EXTRA_DIST 中的拼写错误
  • [core] 移除未使用的 mbedtls_enabled 标志
  • [core] 在设置期间将 fd 存储在 srv->stdin_fd 中
  • [multiple] 解决 Coverity 警告
  • [mod_webdav] 修复理论上的 NULL 解引用
  • [mod_webdav] 更新 PROPFIND allprop 的 rc
  • [mod_webdav] 构建修复: ifdef live_properties
  • [multiple] 解决 Coverity 警告
  • [meson] 修复 libmariadb 依赖
  • [meson] 添加缺失的 libmaxminddb 部分
  • [mod_auth,mod_vhostdb] 添加缓存选项 (修复 #2805)
  • [mod_authn_ldap,mod_vhostdb_ldap] 添加超时选项 (#2805)
  • [mod_auth] 接受 "nonce-secret" 和 "nonce_secret"
  • [mod_openssl] 修复 MacOS X 上的构建警告
  • [core] 如果缓冲区长度大于摘要大小,Nettle 会断言()
  • [mod_authn_dbi] 使用 DBI 的认证后端
  • [mod_authn_mysql,file] 使用 crypt() 节省栈空间
  • [mod_vhostdb_dbi] 允许配置中使用字符串和整数
  • 添加 ci-build.sh
  • 将 ci-build.sh 移动到 scripts
  • [build] AIX 的构建修复
  • [mod_deflate] Brotli 支持
  • [build] 构建中 bzip2 默认不启用
  • [mod_deflate] 修复配置选项中的拼写错误
  • [mod_deflate] 从内部函数传播错误
  • [mod_deflate] deflate.cache-dir 压缩缓存
  • [mod_deflate] mod_deflate 取代 mod_compress
  • [doc] mod_compress -> mod_deflate
  • [tests] mod_compress -> mod_deflate
  • [mod_compress] 移除 mod_compress
  • [build] 将 --with-brotli 添加到 CI 构建
  • [core] server.feature-flags 可扩展配置
  • [core] 连接层 plugin_ctx 与请求分离
  • [multiple] 连接钩子在 con->plugin_ctx 中存储 ctx
  • [core] 分离函数以重置 (request_st *)
  • [multiple] 将 connection_reset 钩子重命名为 request
  • [mod_nss] 函数重命名以保持一致性
  • [core] 检测并拒绝 TLS 连接到明文
  • [mod_deflate] 更快地检查 Content-Encoding
  • [mod_openssl] 使用 BIO_new_mem_buf 读取秘密数据
  • [core] 从 gw 解码 Transfer-Encoding: chunked
  • [mod_fastcgi] 解码 Transfer-Encoding: chunked
  • [core] 更严格地解析 POST 分块块头部
  • [mod_proxy] 向后端发送 HTTP/1.1 请求
  • [tests] test_base64.c 清除缓冲区与重置
  • [core] http_header_remove_token()
  • [mod_webdav] 修复无意中的字符串截断
  • [core] 添加一些缺失的标准包含
  • [mod_extforward] 尝试消除 Coverity 警告
  • [mod_authn_dbi,mod_authn_mysql] 修复 Coverity 问题
  • [build] 修复 SCons 构建以检测 brotli
  • [build] 在 *BSD 上,使用 brotli 的 SCons 构建需要 -lm
  • [build] SCons 构建 mod_deflate 时 brotli 需要 libm
  • [build] SCons brotli 需要 pkg-config --static
  • [build] 避免 accept_filter_arg 编译器警告
  • [build] SCons 修复空格/制表符不一致问题
  • scons: 修复检查环境
  • 在 doc/avahi/ 下添加 avahi 服务文件
  • [mod_webdav] 修复 linkat() 失败时的回退
  • [mod_proxy] 不转发 Expect: 100-continue
  • [core] chunkqueue_compact_mem() 必须更新 cq->last
  • [core] 为 FAMNoExists() 使用 dlsym 以兼容 fam
  • [core] 将 settings.h 分散到适当的头文件
  • [core] 内联 buffer_reset()
  • [mod_extforward] 每个连接保存协议
  • [mod_extforward] 在 HANDLER_COMEBACK 后跳过
  • [core] server.feature-flags 以启用 h2
  • [core] HTTP_VERSION_2
  • [multiple] 如果 "server.h2proto",则允许 TLS ALPN "h2"
  • [mod_extforward] 为 h2 连接保留更改的地址
  • [core] 如果 h2,则不发送 Connection: close
  • [core] h2 的响应头字段名小写
  • [core] 识别状态: 421 Misdirected Request
  • [core] 解析 h2 伪头部
  • [core] request_headers_process()
  • [core] connection_state_machine_loop()
  • [core] 每个连接重置连接计数器
  • [mod_accesslog,mod_rrdtool] HTTP/2 基本记账
  • [core] connection_set_fdevent_interest()
  • [core] HTTP2-Settings
  • [core] 调整 http_request_headers_process()
  • [core] http_header_parse_hoff()
  • [core] 移动 http_request_headers_process()
  • [core] reqpool.[ch] 用于 (request_st *)
  • [multiple] 模块通过函数指针读取请求体
  • [multiple] 在 connections.c 中隔离更多连接代码
  • [multiple] 在 response.c 中隔离更多响应代码
  • [core] h2.[ch] 带存根函数 (未完成)
  • [core] 在两个作业列表之间交替
  • [core] 连接过渡到 HTTP/2; 未完成
  • [core] 用冷区属性标记一些错误路径
  • [core] 丢弃来自后端的 100 102 103 响应
  • [core] 对 100 Continue 跳过写入节流
  • [core] 调整 (已禁用) 调试代码
  • [core] 更新注释
  • [core] 链接 ls-hpack (实验性)
  • [core] 使用 LiteSpeed ls-hpack 的 HTTP/2 HPACK
  • [core] h2_send_headers() 专门用于响应头
  • [core] http_request_parse_header() 专门化
  • [core] 注释可能的未来 ls-hpack 优化
  • [mod_status] 分离函数以打印请求表
  • [mod_status] 调整以打印 HTTP/2 请求
  • [core] 使用相对路径重定向到目录
  • [core] 忽略来自后端的空字段名
  • [build] 修复 Meson 构建
  • [mod_auth] 修复 auth.require 配置错误导致的崩溃 (修复 #3023)
  • [core] 修复默认 server.tag 的 1 字符截断
  • [core] request_acquire(), request_release()
  • [core] 为 HTTP/2 维护 (request_st *) 池
  • [mod_status] r->state 标签的专用函数
  • [core] 将 connections_get_state 移动到 connections.c
  • [core] 修复平滑重启后主进程崩溃问题
  • [core] 推迟优化以读取小文件
  • [core] k,v 头部解析不需要 '\0' 终止符
  • [scripts] cert-staple.sh 增强功能
  • [core] 记录 lighttpd etag 中使用的算法
  • [core] ls-hpack 优化
  • [core] 如果请求行为空,修复主进程崩溃问题
  • [build] 修复 wolfSSL 选项描述中的拼写错误
  • [core] 在 gw_backend 中使用 djbhash 选择主机
  • [core] 将 md5.[ch] 重命名为 algo_md5.[ch]
  • [core] 将 djbhash(), dekhash() 移动到 algo_md.h
  • [core] 将 splaytree.[ch] 重命名为 algo_splaytree.[ch]
  • [core] 导入 xxHash v0.8.0
  • [build] 修改 xxHash v0.8.0 的构建和包含
  • [build] 移除 ls-hpack/deps
  • [core] xxhash 无内联提示; 让编译器选择
  • [mod_dirlisting] 修复配置解析崩溃
  • [mod_openssl] 澄清带弃用选项的跟踪
  • [doc] 刷新 doc/config/*/*
  • [core] 代码大小: 禁用 XXH64, XXH3
  • [doc] 更新 README 和 INSTALL
  • [build] 在 autogen.sh 提示中添加所需包列表
  • [core] 使用 ';' 组合 Cookie 请求头
  • [core] 使用 debug.log-state-handling 记录流 ID
  • [core] 在 h2.c 中设置 r->state
  • [mod_ssi] shell 输出重定向后更新块
  • [mod_webdav] 合并块时保留 bytes_out
  • [multiple] 内联 chunkqueue_length()
  • [core] 冷区代码 h2_log_response_header*() 函数
  • [core] 从 IANA 更新 HTTP 状态码列表
  • [mod_wolfssl] 独立模块
  • [core] http_response_send_file() 中的 Content-Length
  • [core] 调整响应头准备以适应常见情况
  • [core] light_isupper(), light_islower()
  • [core] r->{rqst,resp}_htags 的 tst,set,clr 宏
  • [core] 将 http_header_e 与 _htags 位掩码分离
  • [core] HTTP/2 的 http_header_hkey_get_lc()
  • [core] array.[ch] 使用 uint32_t 而非 size_t
  • [core] 扩展 (data_string *) 以存储头部 ID
  • [multiple] 扩展枚举 http_header_e 列表
  • [core] http_header_e <=> lshpack_static_hdr_idx
  • [core] 跳过 lighttpd 未使用的 ls-hpack 解码工作
  • [TLS] 如果从全局继承空 TLS 配置则报错
  • [core] connection_check_expect_100()
  • [core] 支持来自后端的多个 1xx 响应
  • [core] 在 chunkqueue_compact_mem() 后重新加载 c
  • [core] 通过 HTTP/2 从后端中继 1xx
  • [core] 通过 HTTP/1.1 从后端中继 1xx
  • [core] chunkqueue_{peek,read}_data(), 压缩
  • [multiple] TLS 模块使用 chunkqueue_peek_data()
  • [mod_magnet] magnet.attract-response-start-to
  • [multiple] 代码重用 chunkqueue_peek_data()
  • [core] 将 r->start_hp.tv_sec 重用于 r->start_ts
  • [core] config_plugin_value_tobool() 接受 "0","1"
  • [core] 平滑和立即重启选项
  • [mod_ssi] 在 waitpid() 之前初始化状态变量
  • [core] 平滑关闭超时选项
  • [core] lighttpd -1 支持管道 (例如 netcat)
  • [core] 性能调整以避免加载遗漏
  • [multiple] 在更多地方使用 sock_addr_get_family
  • [multiple] 始终分配的 chunkqueue 内联
  • [core] 写入后传播状态
  • [core] server_run_con_queue()
  • [core] 推迟处理 FDEVENT_HUP 和 FDEVENT_ERR
  • [core] 处理读取 FILE_CHUNK 时意外的 EOF
  • [core] 短路 connection_write_throttle()
  • [core] 在 connection_write_chunkqueue() 中遍历队列
  • [core] connection_joblist 全局
    [core] 更精确地检查流标志
  • [core] fdevent_load_file_bytes()
  • [TLS] STEK 文件使用 fdevent_load_file_bytes()
  • [core] 允许 /dev 下的符号链接用于随机设备
  • [multiple] 使用 light_btst() 进行 hdr 存在检查
  • [mod_deflate] 修复错误情况下的潜在 NULL 解引用
  • [core] 如果 fstat() 失败,在 close() 附近保存 errno
  • [mod_ssi] 使用 stat_cache_open_rdonly_fstat()
  • [core] fdevent_dup_cloexec()
  • [core] 分割 FILE_CHUNK 时复制 FILE_CHUNK fd
  • [core] stat_cache_path_isdir()
  • [multiple] 使用 stat_cache_path_isdir()
  • [mod_mbedtls] 连接重置后消除 CLOSE_NOTIFY
  • [mod_gnutls] 连接重置后消除 CLOSE_NOTIFY
  • [core] 限制 Range 请求中的范围数量
  • [core] 移除未使用的 r->content_length
  • [core] http_response_parse_range() 常量文件大小
  • [core] 将打开的 fd 传递给 http_response_parse_range
  • [core] stat_cache_get_entry_open()
  • [core,mod_deflate] 利用打开 fd 的缓存
  • [doc] 注释掉禁用 .pdf Range 的配置
  • [core] 在 Range 请求中合并附近的范围
  • [tests] 更快地模拟慢速、小数据包
  • [mod_fastcgi] 解码分块是冷区代码路径
  • [core] 修复 chunkqueue_compact_mem 与部分块的问题
  • [core] 读取文件、发送分块时的分配优化
  • [core] 重用 chunkqueue_compact_mem*()
  • [mod_cgi] 使用 splice() 将输入发送到 CGI
  • [multiple] 忽略 openssl 3.0.0 弃用警告
  • [mod_openssl] 将 ticket cb 迁移到 openssl 3.0.0
  • [mod_openssl] 在栈上构造 OSSL_PARAM
  • [mod_openssl] 合并 ssl_tlsext_ticket_key_cb 实现
  • [multiple] openssl 3.0.0 摘要接口迁移
  • [tests] 检测多个 SSL/TLS/加密提供者
  • [core] sys-crypto-md.h 一致接口
  • [wolfssl] wolfSSL_CTX_set_mode 与其他不同
  • [multiple] 如果没有其他加密可用,则使用 NSS 加密
  • [multiple] stat_cache_path_stat() 用于 struct st
  • [TLS] 忽略 ssl-conf-cmd 中的空 "CipherString"
  • [multiple] 移除块 file.start 成员
  • [core] 修改 getrlimit() 的使用方式,使其非致命
  • [mod_webdav] 添加对 cq 记账的缺失更新
  • [mod_webdav] worker_init 后更新默认值
  • [mod_openssl] 使用较新的 openssl 3.0.0 函数
  • [core] config_plugin_value_to_int32()
  • [core] 平滑重启期间最小化暂停
  • [mod_deflate] 使用大型 mmap 块进行压缩
  • [core] stat_cache_entry 引用计数
  • [core] FILE_CHUNK 可以持有 stat_cache_entry 引用
  • [core] http_chunk_append_file_ref_range()
  • [multiple] 使用 http_chunk_append_file_ref()
  • [core] 始终使用共享 fd 进行 lseek()
  • [core] 消除 Coverity 警告 (误报)
  • [core] 消除 ls-hpack 中的 Coverity 警告
  • [core] 消除 Coverity 警告 (再次尝试)
  • [core] 修复分割文件块时的 fd 共享问题
  • [mod_mbedtls] 消除未使用的变量警告
  • [core] 在 sys-crypto-md.h 中使用内联函数
  • [core] 添加 NSS rand 的缺失声明
  • [core] 为基本加密算法初始化 NSS 库
  • [doc] 将 mod_compress 引用更改为 mod_deflate
  • [doc] 将 bzip2 引用替换为 brotli
  • [build] 从 versionstamp 规则中移除 svnversion
  • [doc] /var/run -> /run
  • [multiple] 测试 nss 包含
  • [mod_nss] 更多 nss 包含修复
  • [build] 更可移植的 autogen.sh shell 脚本
  • [mod_webdav] 在 NetBSD 上定义 _NETBSD_SOURCE
  • [core] 消除 Coverity 警告 (再次尝试)
  • [mod_mbedtls] 较新的 mbedTLS 版本支持 TLSv1.3
  • [mod_accesslog] 循环日志后更新默认值
  • [multiple] 添加一些缺失的配置清理
  • [core] 修复 configparser.y 中的 (启动时) 内存泄漏
  • [core] 在 OpenBSD 上将 STAILQ_* -> SIMPLEQ_*
  • [tests] OpenBSD crypt() 支持仅限于 bcrypt
  • [build] 标记加密库对 MD5 的依赖
  • [build] 将 pkg-config 与 wolfssl 一起使用
  • [mod_wolfssl] 使用更多 wolfssl/options.h 定义
  • [mod_wolfssl] 如果未构建 OPENSSL_ALL 则禁用 SNI
  • [mod_wolfssl] ALPN 需要构建 --enable-alpn
  • [mod_secdownload] 修复 FreeBSD 上 NSS 的编译问题
  • [build] 修复 GnuTLS, NSS 的库路径
  • [build] 将 --with-brotli 添加到 meson.build
  • [build] CMake mod_openssl, mod_wolfssl 可以共存
  • [build] CMake 使用 pkg_check_modules() 与 wolfssl
  • [build] 为 NSS 检测 nss3/nss.h 或 nss/nss.h
  • [build] 代码中的 WITHOUT_LIB_CRYPTO 选项
  • [build] 调整 meson.build 以供 OpenWRT 使用
  • [mod_mbedtls] 在预处理定义中封装附加代码
  • [TLS] server.feature-flags "ssl.session-cache"
  • [core] 解决 wolfssl types.h 中脆弱代码的变通方法
  • [core] 将错位的错误跟踪移动到匹配选项
  • [core] 调整 wolfssl 变通方法以适应另一种情况
  • [multiple] 加密库选择的一致顺序
  • [multiple] 选择后包含 mbedtls/config.h
  • [multiple] 选择后包含 wolfssl/options.h
  • [core] 加密库选择后设置 NSS_VER_INCLUDE
  • [core] 如果可用,使用系统 xxhash 库
  • [build] 修复 configure.ac 中的拼写错误
  • [build] 使用系统提供的 libxxhash 的选项
  • [build] meson --with-xxhash 选项
  • [doc] 刷新 doc/config/conf.d/mime.conf
  • [meson] 为 lua 库版本添加匹配的 -I
  • [build] 优先搜索 lua 5.4 版本
  • [core] 在 Linux 上 stat_cache.[ch] 中使用 inotify
  • [build] 检测 inotify 头文件 <sys/inotify.h>
  • [mod_nss] 更新会话票据 NSS 开发注释
  • [core] 在从后端读写时设置 last_used (修复 #3029)
  • [core] gw_recv_response 错误情况的冷区函数
  • [core] 在 *BSD 上使用 kqueue() 而非 FAM/gamin
  • [core] OpenBSD, NetBSD 不支持 graceful-restart-bg
  • [mod_openssl] 添加 LIBRESSL_VERSION_NUMBER 检查
  • [core] 在 stat_cache 中使用栈上的 struct kevent
  • [core] stat_cache 预处理器偏执
  • [mod_openssl] 调整 LIBRESSL_VERSION_NUMBER 检查
  • [mod_maxminddb] 修复配置验证拼写错误
  • [tests] 允许 LIGHTTPD_EXE_PATH 覆盖
  • [multiple] 在 *_env_add 中将 NULL 值视为空 (修复 #3030)
  • [core] 接受来自后端的 "HTTP/2.0", "HTTP/3.0" (修复 #3031)
  • [build] 以更多方式检查 xxhash
  • [core] 接受来自后端的 "HTTP/2.0", "HTTP/3.0" (#3031)
  • [core] http_response_buffer_append_authority()
  • [core] 如果缺失则定义 SHA*_DIGEST_LENGTH 宏
  • [doc] 更新 INSTALL 中可选的包依赖项
  • [mod_alias] 验证给定顺序,而不是排序顺序
  • [core] 过滤重复模块
  • [mod_cgi] 修复 CGI 初始写入失败时的崩溃问题
  • [mod_cgi] 确保在 splice() 之前打开临时文件
  • [multiple] 添加背压网关数据泵 (修复 #3033)
  • [core] 修复 HTTP/2 帧跨块时的 bug
  • [multiple] 更宽容的配置字符串到布尔值转换 (修复 #3036)
  • [core] 检查 __builtin_expect() 可用性
  • [core] 除非调试,否则消除更多请求解析错误
  • [core] 合并块大小检查
  • [mod_flv_streaming] 使用 stat_cache_get_entry_open
  • [mod_webdav] 将完整路径传递给 webdav_unlinkat()
  • [mod_webdav] 如果 _ATFILE_SOURCE 不可用则回退
  • [mod_fastcgi] 将 src/fastcgi.h 移动到 src/compat/
  • [mod_status] 添加额外的 HTML 编码
  • [core] server.v4mapped 选项
  • [mod_webdav] gvfs 目录重定向 bug 的变通方法

外部参考

gstrauss 4 年多前 更新 · 1 次修订