查看源码 Inets 发布说明
Inets 9.3.1
修复的错误和故障
HTTP 客户端现在在返回异步请求时会正确考虑
full_result
选项。潜在的不兼容性
自有 ID:OTP-19158
同步 httpc:request 现在在
HttpOption {timeout, Timeout}
中指定的Timeout
后超时。修复了一个错误,当键:ipfamily 或 unix_socket 不存在时,调用 httpc:set_options/2 会导致另一个值被默认值覆盖。同时改进了这些选项的验证。
改进和新功能
mod_esi
回调中的变量Env
现在将有一个额外的属性{connect_addr, Addr}
,指示服务器接收连接的地址。自有 ID:OTP-19377 辅助 ID:ERIERL-1152, PR-9127
Inets 9.3
改进和新功能
改进了
httpd
模块的文档,并修正了标题和类型。自有 ID:OTP-19171 辅助 ID:PR-8578
用户信息现在在标头中使用之前会被正确地进行百分比解码。
自有 ID:OTP-19172 辅助 ID:PR-8575
Inets 9.2
改进和新功能
引入了 httpd_server 名称配置的默认值,以提高易用性。
潜在的不兼容性
自有 ID:OTP-18641 辅助 ID:PR-7316
httpd
模块已扩展了一个 API,用于通过 HTTP 简单地提供目录内容。通过此更改,可以像这样提供当前工作目录erl -S httpd
可以像这样提供任意目录
erl -S httpd serve path/to/dir
自有 ID:OTP-18727 辅助 ID:PR-7299
添加了
-callback
属性到httpd
,mod_esi
, 和mod_security
。自有 ID:OTP-18786 辅助 ID:PR-7700
Inets 现在使用带有绝对路径的相对重定向,以防止运行 Inets 的人必须配置
ServerName
以匹配服务器的网络可访问主机名。inets
进程现在使用proc_lib:set_label/1
以提高可观察性。自有 ID:OTP-18927 辅助 ID:PR-8029
文档已迁移为使用 Markdown 和 ExDoc。
自有 ID:OTP-18955 辅助 ID:PR-8026
http_uri:encode/1
和http_uri:decode/1
的实现现在已替换为模块uri_string
中的等效但无错误的版本,即uri_string:quote/1
和uri_string:unquote/1
。潜在的不兼容性
自有 ID:OTP-19022
通过此更改,API 规范已更新。
自有 ID:OTP-19033
Inets 9.1.0.2
修复的错误和故障
修复了一个错误,当键:ipfamily 或 unix_socket 不存在时,调用 httpc:set_options/2 会导致另一个值被默认值覆盖。同时改进了这些选项的验证。
自有 ID:OTP-19379 辅助 ID:PR-8878, GH-8829
Inets 9.1.0.1
修复的错误和故障
通过此更改,HTTP 客户端在返回异步请求时,现在会正确考虑 `OptionRequest - full_result`
* 潜在的不兼容性 *
自有 ID:OTP-19158
通过此更改,同步 httpc:request 现在在 `HttpOption {timeout, Timeout}` 中指定的 `Timeout` 后超时
自有 ID:OTP-19221 辅助 ID:ERIERL-1091, PR-8788, PR-8801
Inets 9.1
修复的错误和故障
将某些文件中的意外 Erlang 公共许可证 1.1 标头替换为预期的 Apache 许可证 2.0 标头。
自有 ID:OTP-18815 辅助 ID:PR-7780
正确的 IP 协议处理,以便重定向始终使用正确的 IP 系列选项,并且不会失败。
自有 ID:OTP-18855
改进和新功能
inets
应用程序默认启动ssl
自有 ID:OTP-18735 辅助 ID:PR-7596, GH-7580
避免 httpd 在无法打开文件时返回 500 内部服务器错误。而是会返回 404 或 503。
自有 ID:OTP-18882
正确处理记录的选项 mime_type,为了向后兼容,如果未设置 mime_type,则回退到未记录的选项 default_type。
自有 ID:OTP-18891 辅助 ID:PR-7843, GH-7827
Inets 9.0.2
修复的错误和故障
通过此更改,重写 httpd 按预期工作,并且不返回错误。
自有 ID:OTP-18582 辅助 ID:GH-6074,PR-6892
修复了一个错误,以便
httpd
在 TLS 连接协商期间在错误的时间停止,或任何其他理论上缓慢的连接设置期间不会崩溃。自有 ID:OTP-18688 辅助 ID:ERIERL-962
增强错误处理,避免 HTTP 客户端在以错误格式提供的标头上挂起。
自有 ID:OTP-18694 辅助 ID:GH-7482
通过此更改,httpd 在连接设置期间生成的错误报告包含套接字类型信息。
自有 ID:OTP-18704 辅助 ID:ERIERL-962, PR-7513, OTP-18688
Inets 应用程序中
httpd
服务器的停止和重新启动已重构为更同步且对 OTP 监控器友好的方法。这应该会提高稳定性,例如,避免在停止或重新启动
httpd
时出现httpd_connection_sup
关于被杀死子进程的监控器报告。自有 ID:OTP-18708 辅助 ID:ERIERL-962, OTP-18688
Inets 9.0.1
修复的错误和故障
如果用户提供了 ssl 选项,则不要通过调用
httpc:ssl_verify_host_options(true)
来设置默认的 ssl 选项。自有 ID:OTP-18604 辅助 ID:PR-7306 GH-7303
Inets 9.0
修复的错误和故障
修复了与时间相关的管道/保持活动队列错误,该错误可能导致意外的“socket_remotly_closed”错误。
自有 ID:OTP-18476 辅助 ID:GH-6380
改进和新功能
默认情况下,ssl 连接将使用来自
ssl_default_options(true)
的选项自有 ID:OTP-18167
运行时依赖项已更新。
自有 ID:OTP-18350
弃用
dbg:stop_clear/0
,因为它只是dbg:stop/0
的函数别名自有 ID:OTP-18478 辅助 ID:GH-6903
该实现已修复为在适当的地方使用
proc_lib:init_fail/2,3
,而不是proc_lib:init_ack/1,2
。* 潜在的不兼容性 *
自有 ID:OTP-18490 辅助 ID:OTP-18471, GH-6339, PR-6843
IP 显示字符串现在始终为小写,影响 ipv6 地址。
* 潜在的不兼容性 *
自有 ID:OTP-18530
删除了已弃用的函数
* 潜在的不兼容性 *
自有 ID:OTP-18536
更新 inets 示例目录中的代码以反映最新的实现
自有 ID:OTP-18544 辅助 ID:GH-5276
Inets 8.3.1.5
修复的错误和故障
修复了一个错误,当键:ipfamily 或 unix_socket 不存在时,调用 httpc:set_options/2 会导致另一个值被默认值覆盖。同时改进了这些选项的验证。
自有 ID:OTP-19379 辅助 ID:PR-8878, GH-8829
Inets 8.3.1.4
修复的错误和故障
通过此更改,HTTP 客户端在返回异步请求时,现在会正确考虑 `OptionRequest - full_result`
* 潜在的不兼容性 *
自有 ID:OTP-19158
通过此更改,同步 httpc:request 现在在 `HttpOption {timeout, Timeout}` 中指定的 `Timeout` 后超时
自有 ID:OTP-19221 辅助 ID:ERIERL-1091, PR-8788, PR-8801
Inets 8.3.1.3
修复的错误和故障
修复了运行时依赖项。
自有 ID:OTP-19064
Inets 8.3.1.2
修复的错误和故障
通过此更改,httpd 在连接设置期间生成的错误报告包含套接字类型信息。
自有 ID:OTP-18704 辅助 ID:ERIERL-962, PR-7513, OTP-18688
Inets 应用程序中
httpd
服务器的停止和重新启动已重构为更同步且对 OTP 监控器友好的方法。这应该会提高稳定性,例如,避免在停止或重新启动
httpd
时出现httpd_connection_sup
关于被杀死子进程的监控器报告。自有 ID:OTP-18708 辅助 ID:ERIERL-962, OTP-18688
Inets 8.3.1.1
修复的错误和故障
修复了一个错误,以便
httpd
在 TLS 连接协商期间在错误的时间停止,或任何其他理论上缓慢的连接设置期间不会崩溃。自有 ID:OTP-18688 辅助 ID:ERIERL-962
Inets 8.3.1
修复的错误和故障
修复了与时间相关的管道/保持活动队列错误,该错误可能导致意外的“socket_remotly_closed”错误。
自有 ID:OTP-18509 辅助 ID:OTP-18476
通过此更改,在远程套接字关闭时,当前请求会添加到重试队列(管道或保持活动,但不能同时添加到两者)。
自有 ID:OTP-18545 辅助 ID:OTP-18509, ERIERL-937, ERIERL-928
Inets 8.3
已修复的错误和故障
此更改修复了处理缺少尾部 / 且存在查询组件的文件夹 URI 的问题。
自有 ID:OTP-18472 辅助 ID:DAFH-1592
改进和新功能
向
inets
应用添加了更多类型信息,从而改进了静态分析工具可以检测到的错误。向记录添加类型信息以及更新函数头有助于静态分析工具理解记录中的某些值不能为
'undefined'
,从而使静态工具能够正确地对inets
应用中的更多模块进行类型检查。自有 ID:OTP-18390 辅助 ID:PR-6661
将 size/1 替换为 tuple_size/1 或 byte_size/1
size/1
BIF 未被 JIT 优化,其使用可能会导致 Dialyzer 的类型更差。当已知被测试的值必须是元组时,应始终首选
tuple_size/1
。当已知被测试的值必须是二进制时,应首选
byte_size/1
。但是,byte_size/1
也接受位串(将大小向上舍入为整数个字节),因此必须确保在调用byte_size/
之前调用is_binary/1
,以确保拒绝位串。请注意,编译器会删除对is_binary/1
的冗余调用,因此如果不确定之前的代码是否已确保参数为二进制,则在调用byte_size/1
之前添加is_binary/1
测试并无害处。自有 ID:OTP-18432 辅助 ID:GH-6672,PR-6793,PR-6784,PR-6787,PR-6785,PR-6682,PR-6800,PR-6797,PR-6798,PR-6799,PR-6796,PR-6813,PR-6671,PR-6673,PR-6684,PR-6694,GH-6677,PR-6696,PR-6670,PR-6674
Inets 8.2.2
已修复的错误和故障
确保正常关闭
自有 ID:OTP-18461 辅助 ID:ERIERL-890
函数
httpc:cookie_header/{1,2,3}
的类型规范的返回类型已从-spec cookie_header(url()) -> [{ field(), value() }] | {error, Reason}
修复为-spec cookie_header(url()) -> { field(), value() } | {error, Reason}
自有 ID:OTP-18462 辅助 ID:GH-6846
Inets 8.2.1
已修复的错误和故障
修复了 httpd:info/2/3/4 的类型规范中缺少的情况
自有 ID:OTP-18362 辅助 ID:GH-6558, ERIERL-895
Inets 8.2
改进和新功能
此更改允许向
httpc:request/5
发送的主体请求为iolist/0
自有 ID:OTP-18250
在
httpc.erl
中添加类型规范自有 ID:OTP-18251 辅助 ID:GH-6245
httpc:添加对 HTTP 308 状态码的支持
自有 ID:OTP-18280 辅助 ID:GH-6290, PR-6291
Inets 8.1
改进和新功能
添加
httpc:ssl_verify_host_options/1
以帮助为 https 客户端设置默认 ssl 选项。自有 ID:OTP-18118
此更改修复了为 inets/httpd 示例生成的 dialyzer 警告(包括对 ssh_sftp 模块的规范进行的必要调整)。
自有 ID:OTP-18178 辅助 ID:ERIERL-833, ERIERL-834, ERIERL-835
删除对不再支持的回调的文档。
自有 ID:OTP-18193 辅助 ID:GH-6122
Inets 8.0
已修复的错误和故障
调整 uri_string:normalize 对于具有未定义端口的 URI 的行为(具有端口冒号但没有端口值的 URI 字符串或端口 => 未定义的 URI 映射)。
从 http_request 模块中删除冗余的规范化。
在此更改之前,规范化不会删除此类情况下的端口子组件,并且可能会返回例如“https://127.0.0.1:"” URI。
* 潜在的不兼容性 *
自有 ID:OTP-17627
修复了从 httpc_handler:handle_http_body 返回的 Reason 术语中的错别字。
在此更改之后,could_not_establish_ssl_tunnel 原子会在 Reason 术语中返回。
* 潜在的不兼容性 *
自有 ID:OTP-17889
通过此更改,inets/httpc 中记录了 inet6fb4 选项。当需要通过连接尝试发现 IP 系列时,可以使用该选项。
自有 ID:OTP-18063 辅助 ID:ERIERL-798
改进和新功能
此更改删除了已弃用的函数:http_uri:parse/1、http_uri:parse/2 和 http_uri:scheme_defaults/0。
此更改将已弃用的函数:http_uri:encode/1 和 http_uri:decode/1 的删除推迟到 OTP-26。
此更改将 httpd_util:decode_hex/1 和 httpd_util:encode_hex/1 标记为已弃用。
* 潜在的不兼容性 *
自有 ID:OTP-17866
在此更改之后,当通过代理将 TCP 连接升级到 TLS 时,将重新使用 connect_timeout 值。
自有 ID:OTP-17997 辅助 ID:GH-5782
从 httpd 手册中删除对不受支持的类似 Apache 的配置文件的引用。
自有 ID:OTP-18088 辅助 ID:GH-5276
Inets 7.5.3.4
已修复的错误和故障
通过此更改,在远程套接字关闭时,当前请求会添加到重试队列(管道或保持活动,但不能同时添加到两者)。
自有 ID:OTP-18545 辅助 ID:OTP-18509, ERIERL-937, ERIERL-928
Inets 7.5.3.3
已修复的错误和故障
修复了与时间相关的管道/保持活动队列错误,该错误可能导致意外的“socket_remotly_closed”错误。
自有 ID:OTP-18509 辅助 ID:OTP-18476
Inets 7.5.3.2
已修复的错误和故障
此更改修复了处理缺少尾部 / 且存在查询组件的文件夹 URI 的问题。
自有 ID:OTP-18472 辅助 ID:DAFH-1592
Inets 7.5.3.1
改进和新功能
删除对不再支持的回调的文档。
自有 ID:OTP-18193 辅助 ID:GH-6122
Inets 7.5.3
已修复的错误和故障
修复当使用原子“all”作为 AllowedModule 时 httpd 中 erl_script_script 选项的处理。
自有 ID:OTP-18069 辅助 ID:ERIERL-805
Inets 7.5.2
已修复的错误和故障
编译时间不再记录在 BEAM 文件中。仍有几个试图检索编译时间的未记录函数。这些函数现已删除。
自有 ID:OTP-17962
改进和新功能
修复了 inets:services_info/0 的文档,该文档现在描述 Info 在以 {error, Reason} 形式返回服务信息的情况下可能是一个 Reason 术语()。
自有 ID:OTP-17931 辅助 ID:ERIERL-761
Inets 7.5.1
已修复的错误和故障
避免 HTTP 服务器的中间非正常关闭。
自有 ID:OTP-17922 辅助 ID:ERIERL-743
Inets 7.5
已修复的错误和故障
更正 HTTP 服务器 URI 处理,使其完全依赖 uri_string。服务器可能会错误处理某些 URI 路径,这反过来可能会导致生成不正确的响应。
自有 ID:OTP-17818 辅助 ID:ERIERL-731
改进和新功能
将标头值扩展到 httpc:request/5,以允许使用 binary()。使 httpc:request/5 的无效参数的错误检测更加精确,以便在更多情况下返回错误,而不是导致挂起或 function_clause。在文档中更加精确地描述所接受的参数的类型。
自有 ID:OTP-17579 辅助 ID:GH-5074
Inets 7.4.2
已修复的错误和故障
在此更改之前,目录列表页面中的 href 包含百分比编码的斜杠,这在 httpd 中无法正常工作。
自有 ID:OTP-17383 辅助 ID:GH-4677
恢复了 inets/mod_esi 中的 HTTP 标头处理。
自有 ID:OTP-17600
inets/httpd 目录列表图标和其他改进
自有 ID:OTP-17624 辅助 ID:GH-4855
改进和新功能
httpc:通过删除冗余的 URI 处理来提高性能
自有 ID:OTP-17460
Inets 7.4.1
已修复的错误和故障
改进了 inets/mod_esi 中的用户输入处理,从而防止了不必要的原子创建。
自有 ID:OTP-17490
Inets 7.4
改进和新功能
删除 inets 代码中对 ftp 和 tftp 的所有支持。
自有 ID:OTP-16722
弃用
httpd_util
模块中的以下函数:flatlength/1
、lhexlist_to_integer/1
、integer_to_hexlist/1
、strip/1
和suffix/1
。自有 ID:OTP-16723
删除 httpd 中对 HTTP 0.9 的支持。
自有 ID:OTP-16724
删除 httpc 中对 HTTP 0.9 的支持。
自有 ID:OTP-16725
修复了代码中与下划线前缀变量匹配的警告。
自有 ID:OTP-17385 辅助 ID:OTP-17123
Inets 7.3.2.3
改进和新功能
删除对不再支持的回调的文档。
自有 ID:OTP-18193 辅助 ID:GH-6122
Inets 7.3.2.2
已修复的错误和故障
恢复了 inets/mod_esi 中的 HTTP 标头处理。
自有 ID:OTP-17600
Inets 7.3.2.1
修复的 Bug 和故障
改进了 inets/mod_esi 中的用户输入处理,从而防止了不必要的原子创建。
自有 ID:OTP-17490
Inets 7.3.2
修复的 Bug 和故障
解决了 CVE-2021-27563,确保不能使用任何形式的相对路径来访问 Web 服务器目录之外的区域。
自有 ID:OTP-17205 辅助 ID:ERIERL-608
确保 HEAD 请求拒绝目录链接
自有 ID:OTP-17220
Inets 7.3.1
修复的 Bug 和故障
修复了 inets 中关于 HTML 转义文件名的问题。
自有 ID:OTP-16873 辅助 ID:ERL-330
Inets 7.3
修复的 Bug 和故障
阐明了 HTTP 客户端中百分比编码字符的处理方式。
自有 ID:OTP-16650 辅助 ID:ERL-1215, PR-2629
修复了 URI 中未定义端口导致的崩溃问题。
自有 ID:OTP-16663 辅助 ID:ERL-1241
避免在对等方关闭的套接字上设置一次活动状态时出现时序问题。
自有 ID:OTP-16735 辅助 ID:OTP-16697, ERIERL-496
将状态码为 1XX 的响应消息体作为下一个 HTTP 消息处理。
自有 ID:OTP-16746 辅助 ID:ERL-1268
修复了当对等方关闭的套接字调用 setopts 时 HTTP 服务器崩溃的问题。
自有 ID:OTP-16775 辅助 ID:ERIERL-519
httpd 模块(inets 应用程序)中存在一个关于目录遍历的漏洞,该漏洞在 OTP 22.3.1 中引入,并在 OTP 22.3.4.6 中得到修复。该漏洞也在 OTP 23.0 中引入,并在 OTP 23.1 中得到修复。该漏洞被注册为 CVE-2020-25623
只有在使用 inets 应用程序中的 HTTP 服务器 (httpd) 时才会暴露该漏洞。该漏洞使得可以通过一个特制的 HTTP 请求读取 Erlang 系统具有读取权限的任意文件。
自有 ID:OTP-16790 辅助 ID:ERIERL-522
改进和新功能
在 mod_esi 中添加对 PATCH 方法的支持。
自有 ID:OTP-16591 辅助 ID:ERIERL-484
Inets 7.2
改进和新功能
移除对已弃用功能的支持。删除了对 mod_esi eval 方案、mod_htacess、mod_browser、apache 配置文件和已弃用的 httpd_conf 函数的支持。模块 http_uri 已被弃用。
自有 ID:OTP-16252
重构了已弃用和已删除函数的内部处理。
自有 ID:OTP-16469
Inets 7.1.3.3
修复的 Bug 和故障
修正了 inets-7.1.3 中引入的关于百分比编码 URL 解码的错误。
自有 ID:OTP-16790 辅助 ID:ERIERL-522
Inets 7.1.3.2
修复的 Bug 和故障
修复了当对等方关闭的套接字调用 setopts 时 HTTP 服务器崩溃的问题。
自有 ID:OTP-16775 辅助 ID:ERIERL-519
Inets 7.1.3.1
修复的 Bug 和故障
避免在对等方关闭的套接字上设置一次活动状态时出现时序问题。
自有 ID:OTP-16735 辅助 ID:OTP-16697, ERIERL-496
Inets 7.1.3
修复的 Bug 和故障
移除对 http_uri 和 mod_esi eval API 的使用。
这是从 OTP 23 的一个向后移植,它改进了对 URI 的检查,以确保无效的 URI 不会导致漏洞。这将导致已弃用的 mod_esi eval API 不可用,因为它使用了不符合有效 URI 语法的 URI。
* 潜在的不兼容性 *
自有 ID:OTP-16556
Inets 7.1.2
修复的 Bug 和故障
Inets 将遵循以下规则:有效的 HTTP 标头在字段名和冒号之间不能有空格。
自有 ID:OTP-16169 辅助 ID:ERL-1053
更改了 httpc:request/1 中的错误传播,以返回预期的错误元组,而不是崩溃。
自有 ID:OTP-16290 辅助 ID:PR-2437, ERL-1083
修复了使用分块传输编码 (httpc) 的 HEAD 请求的处理。
自有 ID:OTP-16300 辅助 ID:ERL-1090
Inets 7.1.1
改进和新功能
添加通过 logger 进行 HTTP 服务器错误日志记录的功能
自有 ID:OTP-16019
Inets 7.1
改进和新功能
httpd - 接受单个 LF 作为行终止符
自有 ID:OTP-15893 辅助 ID:PR-2206
mod_esi 现在始终将其响应的实际 HTTP 状态代码传播到后续的 mod 模块,而不是在某些情况下硬编码为 200。
自有 ID:OTP-16049 辅助 ID:ERIERL-395
Inets 7.0.9
修复的 Bug 和故障
修复了 HTTP 客户端中当请求 URI 没有 scheme 时导致崩溃的回归问题。
自有 ID:OTP-15930 辅助 ID:ERL-969
Inets 7.0.8
修复的 Bug 和故障
在源代码注释、文档、示例等中,所有不正确的“can not”用法都已更正为“cannot”。
自有 ID:OTP-14282 辅助 ID:PR-1891
Inets 7.0.7.2
改进和新功能
添加通过 logger 进行 HTTP 服务器错误日志记录的功能
自有 ID:OTP-16019
Inets 7.0.7.1
改进和新功能
mod_esi 现在始终将其响应的实际 HTTP 状态代码传播到后续的 mod 模块,而不是在某些情况下硬编码为 200。
自有 ID:OTP-16049 辅助 ID:ERIERL-395
Inets 7.0.7
修复的 Bug 和故障
修复了 httpd 中选项 erl_script_timeout 的内部处理。如果显式提供了秒为单位的 erl_script_timeout 值,则该值不会被正确转换为内部使用的毫秒单位。
此更改修复了所有可能的配置场景中 erl_script_timeout 的处理。
自有 ID:OTP-15769 辅助 ID:ERIERL-345
Inets 7.0.6
修复的 Bug 和故障
修复了 httpd 中选项 erl_script_timeout 的内部处理。当使用显式 erl_script_timeout 启动 httpd 时,该选项的值会在存储前转换为毫秒。后续调用 httpd:info/1 将返回输入值乘以 1000 的值。
此更改通过以秒为单位存储超时并在使用前转换为毫秒来修复 erl_script_timeout 的处理。
自有 ID:OTP-15669 辅助 ID:ERIERL-321
改进和新功能
增强文档
自有 ID:OTP-15508 辅助 ID:ERL-816
Inets 7.0.5
修复的 Bug 和故障
修复了当使用主机名(例如,localhost)且选项 ipv6_host_with_brackets 设置为 true 时导致 HTTP 客户端崩溃的 Bug。
此更改还修复了一个回归:如果选项 ipv6_host_with_brackets 设置为 true 并且 URI 的主机组件是 IPv6 地址,则 httpc:request 会失败并出现连接错误 (nxdomain)。
自有 ID:OTP-15554 辅助 ID:ERIERL-289
Inets 7.0.4
修复的 Bug 和故障
确保在将 URI 中带有括号的 IPv6 地址传递给 gen_tcp 和 ssl 函数等底层函数之前,正确转换它们。可能导致连接失败。
自有 ID:OTP-15544 辅助 ID:ERIERL-289
Inets 7.0.3
修复的 Bug 和故障
修复了 HTTP 客户端在分块编码的请求中不发送“content-length”标头的问题。
自有 ID:OTP-15338 辅助 ID:ERL-733
修复了 HTTP 客户端在没有正文的请求中(例如,Content-Type 为 application/x-www-form-urlencoded 的请求)删除显式“Content-Type”标头的问题。
自有 ID:OTP-15339 辅助 ID:ERL-736
Inets 7.0.2
修复的 Bug 和故障
增强错误处理,即如果路径是目录而不是文件,则 mod_get 将返回 403。
自有 ID:OTP-15192
当使用 mod_esi 时,不要对 1xx、204 和 304 响应使用分块编码。旧行为不符合 HTTP/1.1 RFC,并且可能导致客户端在收到包含空分块编码正文的 1xx、204 或 304 响应时挂起。
自有 ID:OTP-15241
增加了对带有空正文(1xx、204、304)的分块编码 HTTP 响应的健壮处理。旧行为可能导致客户端在连接到错误的服务器实现时挂起。
自有 ID:OTP-15242
Inets 7.0.1
修复的 Bug 和故障
将找不到 mod 来处理请求的状态码更改为 501
自有 ID:OTP-15215
Inets 7.0
修复的 Bug 和故障
修复了 httpc 中的 HTTP 内容注入漏洞 (ERL-456)。
自有 ID:OTP-14726
修复了对 HTTP 'Location' 标头中 URI 引用的支持 (ERL-333)。
自有 ID:OTP-14729
修复了 httpc 中损坏的“Content-Type”处理 (ERL-536)。
自有 ID:OTP-15006
修复了 httpd 的 script_alias 属性中相对路径的处理 (ERL-574)。
自有 ID:OTP-15021
修复了将 path() 作为第一个参数的 httpd:reload_config/2 (ERL-578)。
自有 ID:OTP-15025
提高了优雅性。
自有 ID:OTP-15042
改进和新功能
拆分 inets 并创建单独的 ftp 和 tftp 应用。
自有 ID:OTP-14113
Inets 6.5.2.4
修复的 Bug 和故障
当使用 mod_esi 时,不要对 1xx、204 和 304 响应使用分块编码。旧行为不符合 HTTP/1.1 RFC,并且可能导致客户端在收到包含空分块编码正文的 1xx、204 或 304 响应时挂起。
自有 ID:OTP-15241
增加了对带有空正文(1xx、204、304)的分块编码 HTTP 响应的健壮处理。旧行为可能导致客户端在连接到错误的服务器实现时挂起。
自有 ID:OTP-15242
Inets 6.5.2.3
修复的 Bug 和故障
将找不到 mod 来处理请求的状态码更改为 501
自有 ID:OTP-15215
Inets 6.5.2.2
修复的 Bug 和故障
增强错误处理,即如果路径是目录而不是文件,则 mod_get 将返回 403。
自有 ID:OTP-15192
Inets 6.5.2.1
改进和新特性
添加了用于在底层 TCP 连接上设置低级别属性的选项。这些选项是:
sock_ctrl
、sock_data_act
和sock_data_pass
。有关详细信息,请参阅手册。自身 ID: OTP-15120 辅助 ID: ERIERL-192
Inets 6.5.2
修复的 Bug 和故障
inets: httpd - 优雅地处理错误的头部
选项 max_headers 操作的是单个头部长度,而不是所有头部的总长度。现在也会丢弃键为空的头部。
自身 ID: OTP-15092
Inets 6.5.1
修复的 Bug 和故障
修复了 httpc 中损坏的选项处理 (ERL-441)。
自身 ID: OTP-15007
Inets 6.5
修复的 Bug 和故障
当在持久 HTTP 连接(保持活动)上发送长时间运行的请求时,httpc_manager 崩溃。修复了 httpc_manager,以便在保持活动连接上使用适当的超时。
自身 ID: OTP-14908
改进和新特性
在 http 客户端中添加了对 unix 域套接字的支持。
自身 ID: OTP-14854
Inets 6.4.5
修复的 Bug 和故障
CGI 环境变量 CONTENT_LENGTH 应该是字符串
自身 ID: OTP-14679
在宽松模式下,如果存在 Transfer-Encoding 头部,则忽略 Content-Length 头部。
自身 ID: OTP-14727
消除竞争条件,该条件可能导致在使用保持活动连接时,http 请求偶尔无法成功完成。
自身 ID: OTP-14783
Inets 6.4.4
修复的 Bug 和故障
更正了位置头部的处理,以便状态代码不会被硬编码。这应该已通过 commit 2cc5ba70cbbc6b3ace81a2a0324417c3b65265bb 修复,但不幸的是,在代码重构期间被破坏,并且由于错误的测试用例而未被注意到。
自身 ID: OTP-14761
Inets 6.4.3
改进和新特性
修复了 POST 请求的错误处理
在 5d01c70ca399edf28e99dc760506329689fab6ba 中添加的 POST 请求中新的正文数据块机制破坏了不使用新机制的 POST 正文数据的处理。
自身 ID: OTP-14656
确保服务 httpd 的 ints:stop/2 是同步的
自身 ID: OTP-14696
遵守 ESI 脚本返回的状态代码并使“location”头部处理现代化。
自身 ID: OTP-14716
Inets 6.4.2
修复的 Bug 和故障
确保 mod_log 使用正确的状态代码
自身 ID: OTP-14510
更正 mod_disk_log 的行为以正确处理修复选项
自身 ID: OTP-14530
Inets 6.4.1
修复的 Bug 和故障
http_uri 遵循 RFC 3986,并且在解码 URI 时不将“+”转换为空格。
自身 ID: OTP-14573
改进和新特性
向 httpd 服务器添加了新的选项 max_client_body_chunk,以允许将 PUT 和 POST 数据分块传递到 mod_esi 回调。请注意,需要新的 mod_esi 回调实现。
也更正了 server_name 环境变量提供的值
自身 ID: OTP-14450
Inets 6.4
修复的 Bug 和故障
httpd_util:rfc1123_date/1 通过以预期的 rfc1123 格式返回原始时间来优雅地处理无效的 DST 日期。
自身 ID: OTP-14394
改进和新特性
为 http_uri 函数添加 Unicode 二进制支持
自身 ID: OTP-14404
httpc - 更改超时处理,以便重定向导致设置新的计时器。这意味着一个简单的重定向请求可能在 2*timeout 毫秒后返回。
自身 ID: OTP-14429
Inets 6.3.9
修复的 Bug 和故障
在特定的时序序列中,分块文件接收的关闭操作会崩溃。
自身 ID: OTP-14391 辅助 ID: seq13306
Inets 6.3.8
改进和新特性
为 inets-6.3.7 添加了缺失的发行说明
自身 ID: OTP-14383
Inets 6.3.7
修复的 Bug 和故障
修复了 ftp 中的一个错误,该错误导致在 recv_chunk 操作之后无法进行进一步操作。
自身 ID: OTP-14242
使默认端口 80 和 443 在自动重定向中隐式。
自身 ID: OTP-14301
Inets 6.3.6
修复的 Bug 和故障
块大小解码可能会失败。症状是,块解码有时会失败,具体取决于接收流的时序。如果块大小被分成两个不同的数据包,则解码将失败。
自身 ID: OTP-13571 辅助 ID: ERL-116
防止 httpc 用户进程在 httpc_handler 进程意外终止时挂起
自身 ID: OTP-14091
在重定向请求时,更正 Host 头部以包含端口号。
自身 ID: OTP-14097
在连接或 TLS 握手错误时正常关闭
自身 ID: OTP-14173 辅助 ID: seq13262
Inets 6.3.5
修复的 Bug 和故障
更正了 inets-6.3.4 中引入的 ftp 客户端中的错误
自身 ID: OTP-14203 辅助 ID: OTP-13982
Inets 6.3.4
修复的 Bug 和故障
修复了一个错误,该错误导致当服务器返回多行响应,并且响应编号位于正在发送的消息中时,ftp 客户端最终处于错误状态。
自身 ID: OTP-13960 辅助 ID: PR1196
当多行响应处理被更正时,ftp 客户端可能会停止使用消息。
自身 ID: OTP-13967
修复了通过代理连接的保持活动 https,以便所有请求(在第一个请求之后)将按预期运行,而不是失败。
自身 ID: OTP-14041
修复了 commit fdfda2fab0921d409789174556582db28141448e 中的一个错误,该错误可能导致在 mod_auth 回调中列出组成员失败。
自身 ID: OTP-14082
改进和新特性
更新 httpc:request 的行为以匹配 RFC-7231
自身 ID: OTP-13902
修复了 dialyzer 警告以及一些空白问题。感谢 Kostis。
自身 ID: OTP-13982 辅助 ID: PR-1207
Inets 6.3.3
修复的 Bug 和故障
inets 的旧选项“inet6fb4”已停止工作。此错误现已更正。由 Edwin Fine 在 bugs.erlang.org ERL-200 和 Github PR#1132 中修复。
自身 ID: OTP-13776 辅助 ID: ERL-200 PR-1132
Inets 6.3.2
改进和新特性
已将 PUT 和 DELETE 支持添加到 mod_esi
自身 ID: OTP-13688 辅助 ID: seq13149
Inets 6.3.1
修复的 Bug 和故障
ftp 客户端中意外地启用了调试消息。
自身 ID: OTP-13712 辅助 ID: seq13143
Inets 6.3
修复的 Bug 和故障
Ftp 客户端修复:1) 修复了如果监听数据套接字被关闭,ftp 客户端 gen_server 会崩溃的 bug。
- 更正了 ftp 客户端错误代码,使其与参考手册中的定义一致
自身 ID: OTP-13644
改进和新功能
删除对 erlang:now() 的使用。
自身 ID: OTP-12441
为 http 客户端添加了对 DELETE Body 的处理。
自身 ID: OTP-13383 辅助 ID: PR-972
从示例和测试中删除了对 mod_include 和 webtool 的引用。
自身 ID: OTP-13445 辅助 ID: PR-988
删除模块 inets_regexp。应使用模块 re 代替。
* 潜在的不兼容性 *
自身 ID: OTP-13561
Inets 6.2.4
改进和新功能
处理 mime 类型文件中的多个 \t
自身 ID: OTP-13663 辅助 ID: seq13132
Inets 6.2.3
改进和新功能
将未使用的模块 inets_regexp 放回,并在 OTP 19 中删除它,因为它是不兼容的,尽管它是一个未文档化的模块,不应影响其他应用程序。
自身 ID: OTP-13533
Inets 6.2.2
改进和新功能
将环境信息项 peer_cert 添加到 mod_esi
自身 ID: OTP-13510
Inets 6.2.1
修复的 Bug 和故障
修复 httpc 中的 ipv6_host_with_brackets 选项
自身 ID: OTP-13417
Inets 6.2
修复的 Bug 和故障
TFTP 客户端/服务器已修复,允许文件大小超过 32MB 块,方法是允许 16 位块计数器回绕。由于这是一种普遍接受的行为,我们将其视为 bug 修复。
自身 ID: OTP-13403
改进和新功能
在客户端处理 HTTP PATCH 方法。
自身 ID: OTP-13286
预期的终止不应记录为应用程序错误。
自身 ID: OTP-13389
Inets 6.1.1.1
修复的 Bug 和故障
修复 httpc 中的 ipv6_host_with_brackets 选项
自身 ID: OTP-13417
Inets 6.1.1
修复的 Bug 和故障
mod_alias 现在遍历所有别名,选择最长的匹配项,而不是第一个匹配项。
自身 ID: OTP-13248
Inets 6.1
修复的 Bug 和故障
将 obs-folds 替换为空格,而不是失败
自身 ID: OTP-13069
为 http_uri API 添加 URI 方案的验证函数
自身 ID: OTP-13071
按照文档处理流式主体。
自身 ID: OTP-13093
更正了 mod_esi 生成的块的错误处理。当出现诸如超时之类的问题时,在块尾部发送警告标头,而不是生成意外的额外 500 请求响应。
自身 ID: OTP-13110
当遇到无效的分块长度标头时,HTTP 客户端正常终止。
自身 ID: OTP-13117
改进和新功能
在使用 inets HTTP 客户端运行 https 时,添加 SNI(服务器名称指示)的默认值。
自身 ID: OTP-12985
像以前的实现一样,对具有尾随空格的分块大小保持宽容。此外,一些旧的嵌入式设备实际上确实有尾随空格,即使这不符合规范。
自身 ID: OTP-13116
Inets 6.0.3
修复的 Bug 和故障
改进了错误处理,并在遇到无效的分块长度标头时正常终止。
自身 ID: OTP-13061
改进和新功能
添加为 httpd 设置套接字选项(如 nodelay)的可能性。也逐步淘汰 ipfamily 选项的旧选项值 inet6bf4。此值将转换为值 inet。
* 潜在的不兼容性 *
自身 ID: OTP-13062
Inets 6.0.2
修复的 Bug 和故障
避免在 mod_auth_server 和 mod_security_server 中因创建名称时使用原子而不是字符串而导致崩溃。
自身 ID: OTP-13022
改进和新功能
将函数 response_default_headers/0 添加到 httpd 自定义 API,以允许用户为 HTTP 响应标头指定默认值。
自身 ID: OTP-13013
Inets 6.0.1
修复的 Bug 和故障
修复了损坏的套接字功能,即在 Linux 系统上,可以在启动 Erlang 之前打开套接字,然后将其传递给 Erlang 的 httpd 守护程序。这很有用,因为包装程序可以打开特权端口,而 Erlang 不必以 root 身份运行。
自身 ID: OTP-12875 辅助 ID: seq12878
修复了损坏的套接字功能,即在 Linux 系统上,可以在启动 Erlang 之前打开套接字,然后将其传递给 Erlang 的 tftp 守护程序。这很有用,因为包装程序可以打开特权端口,而 Erlang 不必以 root 身份运行。
自身 ID: OTP-12898 辅助 ID: seq12900
httpc_handler 即使在要取消的请求已经完成但 httpc_manager 尚未收到通知的情况下,也应正确响应取消请求。
自身 ID: OTP-12922
改进和新功能
将 format_status 函数添加到 httpd 进程,以避免在 supervisor 日志中打印敏感信息。
自身 ID: OTP-12976
返回有意义的错误原因,无论是否使用 http 代理。
自身 ID: OTP-12984
Inets 6.0
修复的 Bug 和故障
修复 httpc 中的竞争条件。如果套接字被对等方关闭,请不要再次尝试关闭它。
自身 ID: OTP-11845
避免进程泄漏,方法是在发送操作失败时正常终止 httpc 请求处理程序进程。
自身 ID: OTP-12362
拒绝 Content-Length 小于 0 的消息
自身 ID: OTP-12739 辅助 ID: seq12860
让 gen_tcp:controlling_process/2 和 inet_sctp:connect/[45] 传播 prim_inet:setopt/3 错误,而不是让它们生成 badmatch 异常。
自身 ID: OTP-12798
改进和新功能
从 inets 中删除服务器端包含支持,因为这是一种旧技术,存在安全问题,并且没有经过充分测试。
* 潜在的不兼容性 *
自身 ID: OTP-12156
server_tokens
配置中的新值,用于限制 banner grabbing 尝试。通过在
inets:start(httpd, ServiceConfig)
的ServiceConfig
中设置{server_tokens, none}
,将不会在来自服务器的消息中设置“Server:”标头。自身 ID: OTP-12661 辅助 ID: seq12840
为了使 HTTP 服务器能够在虚拟化环境中运行,其中可以有多个具有相同 ip 地址和端口的服务器,我们添加了一个新的选项 profile。
自身 ID: OTP-12674
httpc:修复了正常关机的实现,使其能够按预期工作于不使用流水线的 keep alive 连接。
自身 ID: OTP-12803
正确处理使用持久连接时的代理选项。
自身 ID: OTP-12822
Inets 5.10.9
改进和新功能
添加带有可选回调的行为,以自定义 inets HTTP 服务器。
自身 ID: OTP-12776
Inets 5.10.8
修复的 Bug 和故障
拒绝 Content-Length 小于 0 的消息
自身 ID: OTP-12739 辅助 ID: seq12860
Inets 5.10.7
改进和新功能
server_tokens
配置中的新值,用于限制 banner grabbing 尝试。通过在
inets:start(httpd, ServiceConfig)
的ServiceConfig
中设置{server_tokens, none}
,将不会在来自服务器的消息中设置“Server:”标头。自身 ID: OTP-12661 辅助 ID: seq12840
Inets 5.10.6
修复的 Bug 和故障
inets: 正确解析具有空值的“Set-Cookie”标头
httpc_cookie 应解析 'Set-Cookie' 标头中具有空值且未设置任何属性的 cookie。
自身 ID: OTP-12455
改进和新功能
将 URI 片段的解析添加到 http_uri:parse
这修复了 httpc 中的一个 bug,如果重定向 URI 包含片段,则可能导致错误的请求。
自身 ID: OTP-12398
httpc:http 客户端现在忽略无效的 set-cookie 标头
自身 ID: OTP-12430
Inets 5.10.5
修复的 Bug 和故障
mod_alias 现在可以正确处理 https-URI
配置参数 keep_alive_timeout 的一致视图应在 httpd:info/[1,2] 函数中以与其输入相同的单位显示。
自身 ID: OTP-12436 辅助 ID: seq12786
改进和新功能
正常处理无效的 content-length 标头,而不是在 list_to_integer 中崩溃。
自身 ID: OTP-12429
Inets 5.10.4
修复的错误和故障
修复了 httpc 文档中的拼写错误。
自有 ID: OTP-12221
改进和新功能
添加选项 {ftp_extension, boolean} 以启用使用 RFC 2428 中指定的扩展命令 EPSV 和 EPRT(对于 IPv4),而不是使用旧命令。如果没有扩展命令,则不支持 IPv6。
自有 ID: OTP-12255
Inets 5.10.3
修复的错误和故障
修复文档中的一些拼写错误
自有 ID: OTP-12152
改进和新功能
httpd: 将 TLS/SSL 握手超时与保持活动超时分开
自有 ID: OTP-12013
警告:这是实验性的,可能会在没有事先警告的情况下消失或更改。
在 common_test 套件中添加了运行 Quickcheck 和 PropEr 测试的实验性支持。有关新模块
ct_property_testing
,请参阅参考手册。实验性属性测试添加在
lib/{inet,ssh}/test/property_test
下。它们可以直接运行,也可以从 commont_test 套件inet/ftp_property_test_SUITE.erl
和ssh/test/ssh_property_test_SUITE.erl
中运行。有关详细信息,请参阅
test
目录中的代码和手册页。(感谢 Tuncer Ayaz 添加 Triq 的补丁)
自有 ID: OTP-12119
Inets 5.10.2
修复的错误和故障
httpc: 修复处理小型响应时的流式传输错误
自有 ID: OTP-11992
Inets 5.10.1
修复的错误和故障
更正 httpd:reload_config/2 的干扰模式
自有 ID: OTP-11914
改进和新功能
改进了 HTTP 请求行中无效字符串的处理。
影响:可能会提高内存消耗
自有 ID: OTP-11925 辅助 ID: Sequence 12601
Inets 5.10
修复的错误和故障
修复了 httpc 文档中的拼写错误(感谢 Wasif Riaz Malik)
自有 ID: OTP-11538
以下应用程序的应用程序升级 (appup) 文件已更正
asn1、common_test、compiler、crypto、debugger、dialyzer、edoc、eldap、erl_docgen、et、eunit、gs、hipe、inets、observer、odbc、os_mon、otp_mibs、parsetools、percept、public_key、reltool、runtime_tools、ssh、syntax_tools、test_server、tools、typer、webtool、wx、xmerl
一个新的用于测试 appup 文件的测试实用程序已添加到 test_server。现在,OTP 中的大多数应用程序都使用它。
(感谢 Tobias Schlager)
自有 ID: OTP-11744
ftp 现在会从 <CR> 和 <LF> 标签中清除文件名、用户名和密码(感谢 Sergei Golovan)
自有 ID: OTP-11750
更正了 HTTP 客户端中的错误处理,使其行为更加优雅。
感谢 Kirilll Zaborsky
自有 ID: OTP-11794
支持 httpc 中的身份传输编码。
感谢 Anthony Ramine
自有 ID: OTP-11802
忽略空的 Set-Cookie 标头,以提高与违反 RFC 的服务器的互操作性。
感谢 Kirilll Zaborsky
自有 ID: OTP-11803
改进和新功能
提交 6189bc07 "inets: httpc 改进流水线" 已被还原,因为它最终破坏了某些东西,而不是提高流水线利用率。而是由用户配置 httpc 并明智地使用它,以便能够充分利用流水线。
自有 ID: OTP-11756
处理 httpd_util:message/3 中的所有响应代码
自有 ID: OTP-11838
Inets 5.9.8
改进和新功能
修复已损坏的 max_clients 检查,并避免可能导致内存问题的过度日志记录。
自有 ID: OTP-11557 辅助 ID: seq12478
Inets 5.9.7
修复的错误和故障
修复 httpd 配置选项“script_timeout”并修复 httpd 配置选项“keep_alive_timeout”。感谢 Johannes Weissl。
自有 ID: OTP-11276
使 httpc:request_cancel/[1,2] 异步。以前,这些函数试图保证请求答案不会到达客户端,但这仅适用于某些用例。现在,这些函数是完全异步的,这使得客户端有责任忽略对已取消请求的可能响应。
此外,流水线实现也已更改,以提高利用率。计划稍后进一步研究该领域可能的改进。
* 潜在的不兼容性 *
自有 ID: OTP-11312
[httpd] 添加对 mod_head 新响应的处理(否则会导致 case_clause 崩溃)。还更新了日志记录:删除了对保持活动连接超时的日志记录(这是一种正常现象,而不是错误)以及一些访问日志主体大小更正。
自有 ID: OTP-11328
改进和新功能
ftp 客户端现在支持通过 tls (ftps) 的 ftp。
自有 ID: OTP-11037
Inets 5.9.6
改进和新功能
httpc:允许 DELETE 请求中的内容正文。感谢 James Wheare。
自有 ID: OTP-11190
在 ftp_progress 进程退出时,向报告格式添加缺少的括号。感谢 Artur Wilniewczyc。
自有 ID: OTP-11202
修复 inets 文档中的一些错误。感谢 Johannes Weissl。
自有 ID: OTP-11210
修复 httpd, inets 中的各种错别字。感谢 Tomohiko Aono。
自有 ID: OTP-11226
修复 httpd 配置选项“erl_script_nocache”。感谢 Johannes Weissl。
自有 ID: OTP-11260
Inets 5.9.5
修复的错误和故障
还原了在使用 httpc 配置文件时破坏 cookie 处理的错误提交。
自有 ID: OTP-10956
改进和新功能
修复 http_request:http_headers/1 在长度为零时发送内容长度。感谢 CA Meijer。
自有 ID: OTP-10934
整合来自 Andreas Schultz 的椭圆曲线贡献
为了能够在 SSL/TLS 中支持椭圆曲线密码套件,已在 public_key 和 crypto 中添加了处理椭圆曲线基础结构的内容。
这也导致了 crypto API 的重写,以获得一致性并消除不必要的开销。所有使用 crypto 的 OTP 应用程序都已更新为使用新的 API。
影响:椭圆曲线密码学 (ECC) 以比其他公钥算法更小的密钥大小提供同等安全性。更小的密钥大小可以节省功耗、内存、带宽和计算成本,这使得 ECC 对受限环境特别有吸引力。
自有 ID: OTP-11009
修复 httpc 中的 {stream, {self, once}} 以按预期工作。感谢 Masatake Daimon
自有 ID: OTP-11122
Inets 5.9.4
改进和新功能
httpd: 模块选项现在默认为文档中记录的值。
自有 ID: OTP-10844
httpc:修复了被 R13 的一个补丁破坏的持久连接实现。该补丁使持久连接的行为与流水线相同。
自有 ID: OTP-10845
httpd:简化了 httpd 中 ssl 的配置,这也使所有 ssl 选项都可以配置。旧的且有限的方式不再记录,但在一段时间内将支持向后兼容性。
自有 ID: OTP-10846
正确处理“未找到文件或文件不可用”错误代码。感谢 Serge Aleynikov
自有 ID: OTP-10886
Inets 5.9.3
改进和新功能
httpc:HTTP 客户端现在支持通过代理的 HTTPS
自有 ID: OTP-10256 辅助 ID: kunagi-2 [ce2e800e-c99f-4050-a1c4-f47023d9c7aa-1]
一些超出 PDF 页面宽度的示例已得到纠正。
自有 ID: OTP-10665
修复了响应 303 的 POST 请求的自动重定向。感谢 Hans Svensson。
自有 ID: OTP-10765
Inets 5.9.2.2
改进和新功能
使 log_alert 可配置为 ssl 中的选项,将 SSLLogLevel 添加为 inets 配置文件中的选项
自有 ID: OTP-11259
Inets 5.9.2.1
改进和新功能
修复了 inets 中过时的错误报告。
自有 ID: OTP-11185 辅助 ID: seq12357
Inets 5.9.2
改进和新功能
每秒最低字节数
http 服务器的新选项 {minimum_bytes_per_second, integer()},对于一个连接,如果未达到该值,则该特定连接的套接字将关闭。可用于防止来自错误客户端的挂起请求。
自有 ID: OTP-10392
Inets 5.9.1
改进和新功能
更好地处理会话数据库更新期间的错误 (I)。
还添加和更新了一些调试函数 which_sessions/0,1 和 info/0。
自有 ID: OTP-10093
辅助 ID: Seq 12062
删除了 (inets-service 和 tftp) 行为定义的 R14B 兼容版本。
自有 ID: OTP-10095
[httpc] 改进了 KeepAlive 和 Pipeline 超时选项的文档。
自有 ID: OTP-10114
修复的错误和故障
[httpc] 由于处理程序表创建不正确(错误的 keypos),取消请求不起作用。
Vyacheslav Vorobyov
自有 ID: OTP-10092
不兼容性
-
Inets 5.9
改进和新特性
[httpd] 通过新的配置选项 server_tokens 使服务器头部可配置。服务器头部的值以前是硬编码的(在编译时),现在可以通过 server_tokens 配置选项进行修改。
内部 ID: OTP-9805
改进 inets 作为包含应用程序的支持。
inets_app
直接调用supervisor:start_link/3
,而不是调用根 supervisor 函数inets_sup:start_link/0
。这妨碍了在没有包装函数的情况下使用 included_applications 启动 inets。Jay Nelson
内部 ID: OTP-9960
[httpc] 添加用于检索当前选项的函数,get_options/1,2。
内部 ID: OTP-9979
工具模块
http_uri
现在正式支持。此外,
http_uri:parse
函数已扩展以支持更多方案,并提供了一种提供您自己的方案信息的方法。内部 ID: OTP-9983
辅助 ID: Seq 12022
修复的 Bug 和故障
-
Inets 5.8.1
改进和新特性
-
修复的 Bug 和故障
[ftp] 由于 EPRT 命令中 IPv6 地址格式错误,无法打开 IPv6 连接。命令的地址部分错误地包含十进制元素而不是十六进制。
内部 ID: OTP-9827
辅助 ID: Seq 11970
[httpc] 错误的 Keep Alive 模式。选择会话时,没有考虑会话的“状态”(特别是服务器是否已响应)。
内部 ID: OTP-9847
[httpc] 客户端错误地流式传输 404 响应。文档规定只应流式传输 200 和 206 响应。
Shane Evens
内部 ID: OTP-9860
Inets 5.8
改进和新特性
[ftpc] 添加一个配置选项来指定 数据连接超时。即 ftp 客户端等待服务器连接到数据套接字的时间。如果发生此超时,将向调用者返回错误,并且 ftp 客户端进程将终止。
内部 ID: OTP-9545
[httpc] IPv6 HTTP 请求中错误的 Host 头部。当解析带有 IPv6 主机的 URI 时,会删除封装地址部分的括号。然后将此值作为主机头部提供。这可能会导致某些服务器出现问题。一种解决方法是使用 headers_as_is 并在请求调用中提供主机头。为了解决这个问题,添加了一个新的选项,ipv6_host_with_brackets。此选项指定主机头的主机值是否应包含括号。默认情况下,它不包含(和以前一样)。
内部 ID: OTP-9628
修复的 Bug 和故障
[httpd] 修复 mod_log 中内容长度的日志记录。
Garrett Smith
内部 ID: OTP-9715
[httpd] 有时,传输日志中的条目会以数字列表的形式写入消息大小。此列表实际上是字符串形式的大小,例如 “123”,使用控制序列 ~w 写入。现在已对其进行更正,以便将任何字符串转换为整数(如果可能)。
内部 ID: OTP-9733
修复了 Dialyzer 检测到的各种问题。
内部 ID: OTP-9736
不兼容性
[httpc] 已删除已弃用的接口模块
http
。它已被 http 客户端接口模块httpc
取代(很长时间)。内部 ID: OTP-9359
[httpc|httpd] 已弃用旧的 ssl 实现(基于 OpenSSL)。已删除指定使用此版本 ssl 应用程序的配置选项
ossl
。内部 ID: OTP-9522
Inets 5.7.2
改进和新特性
-
修复的 Bug 和故障
[httpd] XSS 防护不适用于十六进制编码的 URL。
内部 ID: OTP-9655
[httpd] 带有格式错误的头部日期的 GET 请求导致服务器崩溃(非致命),并且没有回复客户端。现在将导致回复状态代码 400。
内部 ID: OTP-9674
辅助 ID: seq11936
Inets 5.7.1
改进和新特性
-
修复的 Bug 和故障
[httpc] Cookie 过期日期的解析应该更宽松。也就是说,如果解析失败,则应忽略日期。还增加了对(另一种)日期格式的支持:“Tue Jan 01 08:00:01 2036 GMT”。
内部 ID: OTP-9433
[httpc] 重写了 cookie 解析。除此之外,还解决了来自 www.expedia.com 的 cookie 处理问题。
内部 ID: OTP-9434
[httpd] 修复 Windows 上的 httpd 目录遍历。在 Windows 上,可以使用反斜杠作为目录分隔符进行目录遍历。
András Veres-Szentkirályi。
内部 ID: OTP-9561
Inets 5.7
改进和新特性
[httpc|httpd] 增加了对带有 ssl 的 IPv6 的支持。
内部 ID: OTP-5566
修复的 Bug 和故障
[httpc] 删除在处理正文时(对于 PUT 和 POST)不必要的 iolist_to_binary 使用。
Filipe David Manana
内部 ID: OTP-9317
[ftp] FTP 客户端不适用于 IPv6 主机。
Attila Rajmund Nohl
内部 ID: OTP-9342 辅助 ID: seq11853
[httpd] Peer/sockname 解析不适用于 HTTP 中的 IPv6 地址。
Attila Rajmund Nohl。
内部 ID: OTP-9343
[httpc] 未正确处理独立启动的客户端。此外,没有文档说明如何使用它们,即一旦启动,它们由一个
pid/0
表示,而不是由它们的profile()
表示。内部 ID: OTP-9365
Inets 5.6
改进和新特性
[httpc] 添加对上传正文流(PUT 和 POST)的支持。
有关更多信息,请参阅 request/4,5 函数的
Body
参数的定义。Filipe David Manana
内部 ID: OTP-9094
[ftp] 为所有导出的函数添加了(类型)规范。
内部 ID: OTP-9114 辅助 ID: seq11799
[httpd]
mod_esi:deliver/2
被修改为接受二进制数据。Bernard Duggan
内部 ID: OTP-9123
[httpd] 防止错误页面中的 XSS。通过对保留的 HTML 字符进行编码,防止用户控制的输入在错误页面中被解释为 HTML。
Michael Santos
内部 ID: OTP-9124
[httpd] 改进了错误消息。
Ricardo Catalinas Jiménez
内部 ID: OTP-9157
[httpd] 扩展了对文件描述符的支持。为了能够在不以 root 身份运行 erlang VM 的情况下绑定到特权端口,改进了对使用文件描述符的支持。现在可以在调用 inets:start(httpd, ...) 函数时,将文件描述符添加到配置(选项 fd)。
Attila Rajmund Nohl
内部 ID: OTP-9202
辅助 ID: seq11819
默认的 ssl 类型现在已更改为
essl
。ossl
将在 ssl 应用程序支持它的情况下工作。有关更多信息,请参阅 httpd socket_type 通信属性或 httpc request/4,5 函数。
内部 ID: OTP-9230
* 潜在的不兼容性 *
修复的 Bug 和故障
[httpd] 文档中使用了错误的 安全属性 名称。
security_data_file
代替data_file
。security_max_retries
代替max_retries
。security_block_time
代替block_time
。security_fail_expire_time
代替fail_expire_time
。security_auth_timeout
代替auth_timeout
。Garrett Smith
内部 ID: OTP-9131
[httpd] 修复 mod_esi 生成的超时消息。当 mod_esi 请求超时时,发送超时响应的代码不正确,并且会生成内部服务器错误以及无效的响应行。
Bernard Duggan
内部 ID: OTP-9158
[httpc] httpc 管理器崩溃。当请求导致重试时,请求 id 将在之前的实现中“重用”,可能会发生竞争条件,从而导致管理器崩溃。
现在通过使用 proc_lib:init_ack 和 gen_server:enter_loop 来避免这种情况,以便在不阻塞 httpc_manger 的情况下允许更高级的 httpc_handlers 初始化,并消除可能导致竞争条件的额外进程。
内部 ID: OTP-9246
[httpc] 向带有 ssl 选项
{ip, {127,0,0,1}}
的主机发出请求 (httpc:request
) 会导致处理程序崩溃。原因是 connect 调用导致以原因badarg
退出(对于ssl
和gen_tcp
都是如此)。没有捕获退出。现在已对此进行了改进。
内部 ID: OTP-9289
辅助 ID: seq11845
Inets 5.5.2
改进和新特性
-
修复的 Bug 和故障
[httpd] httpd_response:send_chunk 处理空列表和空二进制数据 - 即不发送任何块,但它不处理包含空二进制数据的列表 [<<>>]。这将作为空块发送 - 这反过来会被 http_chunk 编码为与最终块相同的内容,这将使 http 客户端认为页面已到达末尾。
自有 ID: OTP-8906
Inets 5.5.1
改进和新特性
与 inet6 相关的各种问题。
自有 ID: OTP-8927
更新了 http-server,以确保错误消息中的 URL 经过 URL 编码。在 http-client 中添加了对 URL 编码的支持。还为 inets 应用程序添加了缺失的 include 目录。
自有 ID: OTP-8940
辅助 ID: seq11735
修复的 Bug 和故障
修复 format_man_pages,使其可以处理所有 man 节,并删除各种 man 页面中的警告/错误。
自有 ID: OTP-8600
[httpc] 当连接远程关闭时,管道化和排队请求未被处理。
自有 ID: OTP-8906
Inets 5.5
修复的 Bug 和故障
[httpc] 如果请求超时(非连接超时),则处理程序进程退出(正常),但未能通知管理器进程。因此,管理器没有清理请求表,导致内存泄漏。此外,管理器没有为处理程序创建监视器,因此在无法预料的处理程序崩溃中,这也可能导致内存泄漏。
自有 ID: OTP-8739
服务 tftp 在文档和部分代码中拼写错误。应该是 tftp。
自有 ID: OTP-8741 辅助 ID: seq11635
[httpc] 在用户指南中,将旧的 http 客户端 api 模块 (http) 替换为新的 httpc。
自有 ID: OTP-8742
改进和新特性
消除了自动导入 BIF 冲突的警告。
自有 ID: OTP-8840
Inets 5.4
改进和新特性
[httpc|httpd] - 现在允许通过使用
essl
标签来使用“新的” ssl。有关更多信息,请参阅 request/4,5 或“通信属性”章节中的 socket-type 部分中的
http_option
选项。自有 ID: OTP-7907
已删除指定在 R14 中删除的已弃用函数。此外,一些新函数已被标记为已弃用(旧的 http 客户端 api 模块)。
自有 ID: OTP-8564
* 潜在的不兼容性 *
[httpd] - 改进了 mod_alias。现在能够更好地进行 URL 重写。
有关更多信息,请参阅 URL 别名属性和 CGI 属性部分。
自有 ID: OTP-8573
修复的 Bug 和故障
-
Inets 5.3.3
改进和新特性
-
修复的 Bug 和故障
[httpc] - 使 cookie 处理更不区分大小写。
自有 ID: OTP-8609
Nicolas Thauvin
[httpc|httpd] - Netscape cookie 日期也可以用 2 位数年份给出(例如 06 = 2006)。
自有 ID: OTP-8610
Nicolas Thauvin
[httpd] - (再次)添加了对文档中调试功能的支持。有关更多信息,请参阅用户指南中的 配置 章节。
自有 ID: OTP-8624
Inets 5.3.2
改进和新特性
-
修复的 Bug 和故障
[httpc] - 修复了内存泄漏。配置文件管理器从未清理其处理程序数据库。这意味着,对于每个新的请求处理程序,都会创建一个永远不会删除的条目。最终,请求 ID 计数器(用作键)会回绕,但机器很可能在此之前耗尽内存。
自有 ID: OTP-8542
Lev Walkin
[httpc] - 默认端口 (443) 的 https 请求未得到正确处理。
自有 ID: OTP-8607
jebu ittiachen
Inets 5.3.1
改进和新特性
-
修复的 Bug 和故障
[httpc] - 连接到服务器时发生的错误的格式错误的错误原因。此外,可能的错误原因未正确记录。
自有 ID: OTP-8508
辅助 ID: seq11407
[httpd] - ESI erl_script_timeout 的问题。
erl_script_timeout
配置选项在文档中记录为秒数。但是在解析配置时,以新的格式(不是配置文件),它被视为毫秒数。- 当 erl-script-timeout 时间超过时,服务器错误地将答案标记为已发送,从而使客户端挂起(答案不完整)。这种情况已更改,因此现在将关闭套接字。
自有 ID: OTP-8509
Inets 5.3
改进和新特性
[httpc] - 允许用户在发出请求时将套接字选项传递给传输模块。
有关更多信息,请参阅 request/4 或 set_options/1,2 中的
socket_opts
选项。自有 ID: OTP-8352
[httpc] 修复当端口不是 80 时创建 Host 标头的错误。
当向侦听非 HTTP 默认端口 80 的服务器发出请求时,Host 标头应包括端口号以及主机名。目前,仅包含主机名。这对于使 http 客户端更符合 HTTP 规范非常重要。
自有 ID: OTP-8371
Kelly McLaughlin
[httpc|httpd] http_chunk 数据处理/传递改进。
这是对 http_chunk 模块的修改,以转发接收到的任何完整块,无论是否已接收到以下块的大小字段。这允许在使用长期 HTTP 连接发送周期性状态更新作为单个块的情况下使用 http_chunk。之前,在读取下一个块的大小之前,不会将给定块转发到客户端进程,这使得该模块难以用于所描述的场景。
Bernard Duggan
自有 ID: OTP-8351
在应用程序的发布版本中包含 inets 测试套件。
自有 ID: OTP-8349
[httpc] - 现在可以配置客户端以将异步回复传递给比调用进程更多的接收者。
有关更多信息,请参阅 receiver 选项。
自有 ID: OTP-8106
[httpd] - 现在允许使用方法“PUT”和“DELETE”。
自有 ID: OTP-8103
[httpc] 更多或更少的关键修复
httpc 管理器和请求处理程序之间的初始调用是同步的。
当管理器启动新的请求处理程序时,这不再是同步操作。之前,新的请求处理程序在 gen_server init 函数中建立与服务器的连接并发出第一个请求(启动它的原因)。如果连接由于某种原因“花费了一些时间”,则管理器会挂起,导致该管理器的所有其他活动也挂起。
作为这些更改的副作用,一些模块也被重命名,并引入了一个新的 api 模块
httpc
(旧模块http
没有删除,但现在只是httpc
的包装器)。自有 ID: OTP-8016
* 潜在的不兼容性 *
修复的 Bug 和故障
[httpd] 服务器不完全支持文档化的模块回调 api。具体来说,load 函数应该能够返回原子
ok
,但这是不被接受的。自有 ID: OTP-8359
修复各种与文档相关的错误(错误的引号)。
自有 ID: OTP-8327
修复小的 Dialyzer 和版权问题。
自有 ID: OTP-8315
[httpc] - 添加了选项值组合的基本健全性检查。
自有 ID: OTP-8056
Inets 5.2
改进和新特性
[ftpc] - FTP 客户端的启动方式已更改如下
现在还可以使用重新引入的
ftp:open/2
函数启动独立的 FTP 客户端进程。这是使用 inets 服务框架启动客户端的替代方法。
旧的
ftp:open/1
,未记录的函数,导致客户端挂钩到 inets 服务监督框架中。现在不再是这种情况。* 潜在的不兼容性 *
以前,FTP 客户端会尝试使用 IPv6,除非另有指示(
ip_v6_disabled
标志),并且仅在 IPv6 不起作用时才使用 IPv4。现在已更改。引入了一个新的选项 ipfamily,默认值为
inet
(IPv4)。有关更多信息,请参阅
ftp:open/2
。* 潜在的不兼容性 *
自有 ID: OTP-8258
现在使用大多数平台上存在的开源工具(xsltproc 和 fop)构建文档。一个明显的改变是删除了框架。
自有 ID: OTP-8249
修复的 Bug 和故障
[httpc] - 流式传输到文件不起作用。
自有 ID: OTP-8204
[ftpc] -
ftp:ls/2
函数(LIST 命令)和ftp:nlist/2
函数(NLST 命令)使用通配符无法正常工作。这些函数在文档中记录为在目录上工作,但实际上不符合标准。LIST 和 NLST 命令指定在目录或其他文件组或文件上操作。
之前,尝试检查服务器返回的列表是否实际上是错误消息。这是通过将远程目录 (cd) 更改为(假定的)“目录”来完成的。如果 Pathname 实际上是一个目录,这可能会起作用,但由于情况并非总是如此,因此此测试不起作用。相反,我们现在返回实际的服务器结果,并将解释留给调用者。
* 潜在的不兼容性 *
自有 ID: OTP-8247
辅助 ID: seq11407
[httpc] - 修复了超时和保持活动队列处理中的各种错误。
- 当排队的请求超时时,错误消息会发送给活动请求的所有者。
- 当处理程序终止时,保持活动队列中的请求会被遗忘。
- 超时的请求会被重试。
Jean-Sébastien Pédron
自有 ID:OTP-8248
[httpd] - 处理关闭套接字时,不必要的严格匹配。
自有 ID:OTP-8280
Inets 5.1.3
改进和新功能
-
修复的 Bug 和故障
[httpc] - 竞态条件。当调用 http:request 并且 httpc_manager 选择了一个已经有挂起请求的会话时,该会话的连接处理程序会有效地重置其解析器,为第二个请求的响应做好准备。但是,如果仍然有一些针对第一个请求响应的入站数据包,情况就会变得混乱。
自有 ID:OTP-8154
Inets 5.1.2
改进和新功能
[httpc] - 为 http 客户端请求添加了 http 选项
connect_timeout
。connect_timeout
选项用于客户端连接到服务器时的初始请求。默认值与timeout
选项相同。有关详细信息,请参阅 request/4,5 函数。
自有 ID:OTP-7298
修复的 Bug 和故障
[httpd] - 使用无效的选项组合创建监听套接字失败。当绑定地址是 IPv4 地址(大小为 4 的元组)且 ipfamily 选项为 inet6fb4 时,http 服务器未能创建其监听套接字。
自有 ID:OTP-8118
辅助 ID:seq11321
[httpd] - 删除了不存在的函数(httpd_util:header/2,3,4)的文档。
自有 ID:OTP-8101
Inets 5.1.1
改进和新功能
[httpd] - 当启动 inets(Web 服务器)并在命令行上提供描述符(示例:erl -httpd_8888 <descriptor>)时,现在可以指定要使用的 ip-family:
inet | inet6 | inet6fb4
。示例:erl -httpd_8888 10|inet6
当使用带有属性列表的文件(proplist_file)或属性列表启动 Web 服务器时,请使用 ipfamily 选项:
{ipfamily, inet | inet6 | inet6fb4}
。最后,当使用经典的 Apache 样式的配置文件启动 Web 服务器时,
BindAddress
指令已得到增强,允许指定 IpFamily:BindAddress blirk.ericsson.se|inet
默认值为
inet6fb4
,它模拟了先前版本的行为。有关详细信息,请参阅 通信属性 部分。
自有 ID:OTP-8069
辅助 ID:seq11086
修复的 Bug 和故障
[httpc] - 接收到意外数据导致处理程序崩溃。
自有 ID:OTP-8052
Inets 5.1
改进和新功能
[httpc] 添加了对仅使用基本身份验证的 Web 服务(使用令牌作为用户部分且没有密码部分)的支持。
自有 ID:OTP-7998
[httpc] - 将 HTTP 客户端绑定到 IP 地址。现在可以指定在客户端连接到服务器时要使用的备用 IP 地址和端口。
作为此操作的副作用,
ipv6
选项已被删除,并替换为ipfamily
选项。有关详细信息,请参阅 http:set_options/1,2。
* 潜在的不兼容性 *
自有 ID:OTP-8004
修复的 Bug 和故障
更新了 guard 测试(例如,使用 is_list(L) 而不是 list(L),并可能使用 andalso/orelse 而不是 ","/“;”)。
自有 ID:OTP-7994
[httpc] - 删除对已弃用的 regexp 模块的使用。
自有 ID:OTP-8001
[httpc] - 选项
max_keep_alive_length
未被正确处理。自有 ID:OTP-8005