acl(https://sourceforge.net/projects/acl/) 开源项目新版本 3.0.8 版发布了,有关 acl 的介绍参见:acl 框架库简介, 主要是修复了一些存在的 BUG,同时伴随一些模块的性能提高,以及针对 master 服务器框架的功能扩展。下面是本次修改的主要内容:node
acl 3.0.8 (2013.6.25)json
1、lib_acl缓存
1) feature: acl_master 框架支持在一个配置文件中监听多个地址(能够为 TCP服务器
套接口与域套接口混用)app
2) feature: acl_master 框架支持在 reload 时的 prefork,修改的相关文件有:框架
master_avail.c, master_service.c, master_spawn.c, master.hsocket
3) acl_master_log.c: 将日志输出信息当调试状态对待函数
4) bugfix: acl_array.c->acl_array_prepend,其中调用的 acl_array_succ_insert,性能
应该调用 acl_array_pred_insert,该 BUG 会影响到全部调用 acl_dlink, acl_iplink,测试
acl_access 函数的地方,包括 acl_aio_app_main.c/acl_ioctl_app_main.c 中有关访问
权限的地方
5) 将 acl_iplink.c 中的函数调用映射为直接调用 acl_dlink.c 中的方法
6) samples/iplink: 该例子用于测试 acl_iplink.c 中的相关函数
7) bugfix: acl_mylog.c->reopen_log 函数中的 RETURN 宏定义中应该是
thread_mutex_unlock,原来的 thread_mutex_lock 会形成死锁
8) bugfix: acl_json_parse.c: 有些汉字,如“誠”的后半个字节的值正好与转义字符
相同,即为 92,因此须要兼容此状况,当判断 last_ch < 0 且当前 char 为 92
时,则认为
汉字状况; acl_xml_parse.c 也存在相似问题,已修复
9) acl_json.c/acl_xml.c: 当启用结点对象缓存策略时,acl_json_node_reset 和
acl_xml_node_reset 中调用 ACL_VSTRING_RESET 后还应该调用 ACL_VSTRING_TERMINATE
10) bugfix: acl_basename.c -> acl_safe_basename 在 3 月份修改的有误
2、lib_protocol
1) performance: http 协议库提升了 HTTP 头的解析速度,由原来的每秒 5 万
屡次提高至每秒 17 万屡次
2) bugfix: http 协议库中 http_hdr_reset 函数判断 hh 参数是否合法时有误
3、lib_acl_cpp
1) feature: 添加了 server_socket 类
2) socket_stream: 对 get_ip 类的函数作了必定调整
3) samples/benchmark: 增长了 client/server 两个用于测试 IO 压力的程序
4) feature: HttpServletRequest/http_client 添加调试输出 HTTP 请求头的函数