TCP 客户端可以在发完请求后 关闭自己的写方向,同时继续等待响应。把小型原始 TCP 测试与 HTTP 客户端作比较时,Squid 针对该状态的处理策略很关键。

对于 Squid 7,文档记载的默认值是:

half_closed_clients off

在该策略下,当读取报告不再有传入数据时,Squid 会关闭客户端连接。若启用该选项,它可以保留连接,直到读或写遇到错误。文档建议常规正向代理运行使用默认的 off 策略。

记录测试客户端何时发出输入结束信号。到达 stdin EOF 的管道,其行为可能不同于在读取响应时保持发送端打开的客户端,即使两者发送了相同的 HTTP 请求字节。

如果测试客户端完全终止,它就无法读取之后到达的响应。服务端的半关闭设置无法改变该客户端进程的生命周期。

针对预期测试,把客户端的 EOF 行为与代理策略一起选择。半关闭策略还假定 HTTP 消息具有有效的分帧;它既不补齐缺失的请求体,也不修复不完整的头块。

相关文章