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 請求頭的函數