🔗 特性:通信层清理
- 目标:提高代码质量和可维护性。
- 状态:已完成。正在调试中。
- 版本:Squid 3.2
- 开发者:AmosJeffries
- 更多:
- Bug:
🔗 详细信息
我们需要清理通信层代码并模块化。
目前,它基本上是一个未文档化的对象和命名空间集合,它们相互作用以执行通信操作。一些本应是通信层操作的功能也分散在 Squid 的其他组件中。
我们需要一个精简、清晰、对开发人员有意义的通信层。与其他组件 API 的清晰交互。大多数(可能所有)开发人员甚至无法完全理解所有的交互和内部依赖关系,这会导致代码质量雪上加霜。
目前,通信层与常规代码唯一的区别是它们位于 comm.cc 和 com.h 中。
🔗 进展
- 处理入站客户端连接(接受/监听器)的通信代码现已清理完毕,并隔离在一个通信库中,该库具有一个小型、清晰且有文档的 API。
目前正在 3.2 版本中进行测试。
- 用于服务器连接的出站连接设置(套接字打开/连接/绑定)现已清理完毕,并隔离在一个通信库中,该库具有一个小型、清晰且有文档的 API。
- 整个代码中的文件描述符(FD)处理已得到优化,现在传递的是 Connection 对象而不是原始 FD 来处理 TCP 连接。
- DNS 查找已从通信层的 TCP 设置中提取出来。需要新连接的组件负责生成一个 Comm::Connection 模板,该模板至少包含目标 IP 地址。
- CONNECT 隧道方法重试。在传输一些字节之前是可能的。
- 持久连接按目标 IP:端口进行池化。从池中检索时,会根据所需本地端点 IP(如果存在)进行过滤,以支持透明拦截和 tcp_outgoing_address,这需要一个固定的本地地址。
🔗 待办事项
-
入站 SSL 层仍需一些关注,以便将其置于通信监听器接口之后,远离上层代码。这可能作为启用 SSL 使用除 OpenSSL 以外的多种系统库的升级的一部分来完成。
-
出站 SSL 层仍需一些关注,以便将其置于通信连接器接口之后,远离上层代码。这可能作为启用 SSL 使用除 OpenSSL 以外的多种系统库的升级的一部分来完成。
-
套接字读取操作需要一个经过优化的 API。
-
套接字写入操作需要一个经过优化的 API。
-
类别:功能
导航:站点搜索,站点页面,类别,🔼 向上