acl 3.0.12 °æ±¾ (ÏîÄ¿Ö÷Ò³£ºhttps://sourceforge.net/projects/acl/, ¼¼ÊõÎÄÕÂÖ÷Ò³£ºhttp://zsxxsz.ietye.com/) ·¢²¼ÁË£¬acl ÊÇ one Advanced C/C++ library µÄ¼ò³Æ£¬Ö÷Òª°üÀ¨ÍøÂçͨÐÅ¿âÒÔ¼°·þÎñÆ÷¿ò¼Ü¿âµÈ¹¦ÄÜ£¬Ö§³Ö Linux/Windows ƽ̨£»Õû¸ö acl ÏîÄ¿Ö÷Òª°üº¬Èý¸öº¯Êý¿â£ºlib_acl(´¿C¿ª·¢µÄ×î»ù´¡¿â£¬Ö÷Òª°üº¬ÍøÂçͨÐż°·þÎñÆ÷±à³Ì¿ò¼ÜÒÔ¼°ÆäËü·á¸»µÄ¹¦ÄÜ)¡¢lib_protocol(°üº¬ HTTP/PING/SMTP ͨÐÅÐÒéµÄCÓïÑÔʵÏÖ)¡¢lib_acl_cpp(»ùÓÚ lib_acl ¼° lib_protocol Á½¸öC¿â£¬ÌṩÁ˸üΪǿ´óµÄ±à³Ì½Ó¿Ú¼°·á¸»µÄ¹¦ÄÜÀà)£»±¾´Î acl Éý¼¶³ýÁËһЩ³£¼û bug ÐÞ¸´Í⣬Ö÷ÒªÕë¶Ô ACL µÄͨÐÅÄ£¿éÔö¼ÓÁË UDP µÄͨÐÅÄÜÁ¦£¬Í¬Ê±Ôö¼ÓÁË UDP ·þÎñÆ÷ͨÐÅÄ£°å¡£
acl °üÀ¨ÒÔÏ·ḻµÄ³£Óú¯Êý¿â£º
1¡¢³£¼ûÍøÂçÓ¦Óÿ⣺ SMTP ¿Í»§¶Ë¿â/PING ¿â/memcache ¿Í»§¶Ë¿â/handlersocket ¿Í»§¶Ë¿â/beanstalk ¿Í»§¶Ë¿â
2¡¢HTTP ÍøÂç¿â£ºHTTP ¿Í»§¶Ë/·þÎñ¶Ë¿â£¬C++°æ HttpServlet À࣬HTTP COOKIE/HTTP SESSION µÈ
3¡¢Óʼþ½âÎö¿â£ºmime½âÎö¿â/RFC2047/RFC2048/mime base64/mime qp/mime uucode µÈ
4¡¢ÍøÂçͨÐſ⣺×èÈû/·Ç×èÈûÍøÂç IO ¿â(ÆäÖÐ lib_acl_cpp ¿âͨ¹ýǶÈë polarssl ¶ø¾ß±¸ÁË SSL µÄÄÜÁ¦)
5¡¢·þÎñÆ÷¿ò¼Ü£º°üÀ¨½ø³Ì³ØÄ£Ê½¡¢Ï̳߳ØÄ£Ê½¡¢·Ç×èÈûģʽ¡¢UDPͨÐÅģʽ¼°´¥·¢Æ÷ģʽ
6¡¢Ê¼þÒýÇæ£ºÖ§³Ö select¡¢poll(for unix)¡¢epoll£¨for linux)¡¢kqueue£¨for bsd)¡¢devpoll(for solaris)¡¢iocp(for win32)¡¢win32 ´°¿ÚÏûÏ¢(for win32£©Ê¼þÒýÇæ
7¡¢Í¨ÓÃÁ¬½Ó³Ø¿â£º¸ßЧµÄÁ¬½Ó³Ø»ù´¡Àà¿â£¬Ö§³Ö·á¸»µÄ¹¦ÄÜ
8¡¢Êý¾Ý¿â¿Í»§¶Ë¿â£º¶ÔÔÉúµÄÊý¾Ý¿â¿Í»§¶Ë¿â½øÐÐÁ˶þ´Î·â×°£¬Ê¹±à³Ì¸üΪ¼òÒ×£¬¹¦ÄܸüΪ·á¸»
9¡¢xml/json Á÷ʽ½âÎö¿â£ºÇø±ðÓÚÍøÉÏÆäËüÒÑÓÐµÄ xml/json ½âÎö¿â£¬acl ÖÐµÄ xml/json ½âÎö¿â²ÉÓÃÓÐÏÞ״̬»ú·½Ê½½âÎöÊý¾Ý£¬´¦Àí·½Ê½¸üΪÁé»î
Ò»¡¢»ù´¡¿â£ºlib_acl
. feature: acl_single_server.c, acl_ioctl_server.c, acl_aio_server.c, acl_udp_server.c Ôö¼ÓÁË¿ÉÒÔ»ñµÃ±¾µØ¼àÌýÌ×½Ó¿ÚÁ÷¶ÔÏ󼯺ϵĺ¯Êý
. feature: master ·þÎñÆ÷¿ò¼ÜÔö¼ÓÁËרÃÅÕë¶Ô UDP µÄ·þÎñÆ÷Ä£°å acl_udp_server.c/acl_udp_params.h
. feature: ACL_VSTREAM Ö§³Ö UDP ´«Êä; acl_vstream_net.c ÖÐÔö¼ÓÁË acl_vstream_bind º¯ÊýÓÃÀ´°ó¶¨ UDP ´«Êäģʽ
. feature: ACL_VSTREAM Ôö¼ÓÁË acl_vstream_set_local_addr, acl_vstream_set_peer_addr
. feature: ACL_VSTREAM ÖÐÌí¼ÓÁË struct sockaddr_in ÀàÐ͵ÄÁ½¸öÖ¸Õ룬ÒÔ±ãÓÚ ACL_VSTREAM ºÜÈÝÒ×Ö§³Ö UDP ´«Êä
. feature: ACL_VSTREAM ¶ÔÏóÔö¼ÓÁË acl_vstream_set_local, acl_vstream_set_remote, acl_vstream_set_path Èý¸öº¯Êý
. performance: ACL_VSTREAM Öн« remote_addr, local_addr ¶¨ÒåΪָÕ룬´Ó¶ø´ó´ó¼õÉÙÁË ACL_VSTREAM ¶ÔÏó´´½¨Ê±µÄ³ß´ç´óС
. compile: Ôö¼ÓÁ˹¤³ÌÎļþ Makefile.db£¬Ê¹Óøù¤³ÌÎļþ±àÒ룬Ôò¿ÉÒÔʹÓà mysql Êý¾Ý¿â¹¦ÄÜ£¬Ê¹Óà Makefile ¹¤³ÌÎļþ±àÒ룬Ôò¿ÉÒÔ lib_acl.a ¸üΪ¸É¾» (¼´²»ÒÀÀµÓÚÈκεÚÈý·½¿â)
. bugfix: events_select.c/events_select_thr.c µ±Ì×½Ó×Ö¼àÌý¼¯ºÏΪ¿ÕʱÐÝÃßµÄʱ¼äµ¥Î»ÎªÃ룬ÐèÒª½«Î¢Ãë¼¶µÄ delay תΪÃë¼¶
. other: events Ä£¿é ACL_EVENT_NOTIFY_RDWR/ACL_EVENT_NOTIFY_TIME º¯Êý½Ó¿ÚÀàÐÍÖØÐ¶¨Ò壬Ôڻص÷º¯ÊýÖÐÔö¼ÓÁË ACL_EVENT£¬ACL_VSTREAM ²ÎÊý£¬´Ó¶ø·½±ãÓû§Ö±½ÓʹÓã»ÒòΪÕâÁ½¸ö½Ó¿ÚµÄÖØÐ¶¨Ò壬µ¼ÖÂÁ˺ܶ๦ÄÜÄ£¿é×öÏàÓ¦Ð޸ģ¬Ö÷ÒªÓ°ÏìµÄÄ£¿éÓУºevent, master, aio, ioctl
. other: ½« master Ä£¿éϵÄÔ´Îļþ´úÂëÅŰæÕûÀíÁËÒ»ÏÂ
. other: acl_vstream.c: acl_vstream_set_remote ÖØÃüÃûΪ acl_vstream_set_peer
¶þ¡¢Ó¦ÓÃÐÒé¿â£ºlib_protocol
. bugfix: http_chat_async.c ÖÐ http_res_body_get_async/http_req_body_get_async Á½¸öº¯ÊýûÓÐ¶Ô ctx->read_cnt Öà 0
. other: lib_acl ¿âÖÐ ACL_EVENT_NOTIFY_RDWR/ACL_EVENT_NOTIFY_TIME º¯Êý½Ó¿Ú¶¨ÒåµÄÐ޸ģ¬ÓëÖ®Ïà¹ØµÄÄ£¿é(icmp)½øÐÐÁËÐÞ¸Ä
. other: ÒòΪ lib_acl »ù´¡¿âÖÐµÄ ACL_VSTREAM ¶Áд»Øµ÷º¯Êý½Ó¿Ú±ä¸ü£¬µ÷ÕûÁËÓëÖ®Ïà¹ØµÄ²¿·ÖÄÚ²¿½Ó¿Ú£¬Ö÷ÒªÓ°Ïìµ½ÁË icmp Ä£¿éÖÐ icmp_stream.c ÖеÄÄÚ²¿½Ó¿Ú
Èý¡¢¹¦ÄܷḻµÄC++¿â£ºlib_acl_cpp
. feature: aio_stream Ôö¼ÓÁË get_peer/get_local ÓÃÀ´»ñµÃÍøÂçÁ¬½ÓÁ÷µÄ±¾µØ¼°Ô¶³ÌµØÖ·
. feature: master_udp ·þÎñÆ÷Ä£°åÔö¼ÓÁË¿ÉÔÚ proc_on_init() Ð麯ÊýÖлñµÃ±¾µØ°ó¶¨Ì×½Ó×ÖÁ÷¶ÔÏ󼯺ϵĺ¯Êý¹¦ÄÜ: get_sstreams()
. feature: master ·þÎñÆ÷¿ò¼ÜÔö¼ÓÁË master_udp ·þÎñÄ£°åÀà
. feature: connect_manager ÀàÔö¼ÓÁ˸ù¾Ý¼üÖµ×Ö·û´®µÄ¹þÏ£Öµ»ñÈ¡Á¬½Ó³Ø¶ÔÏóµÄÐ麯Êý£¬´Ó¶øÓÐÀûÓÚÔÚ·Ö²¼Ê½»·¾³ÀïʹÓÃÁ¬½Ó³Ø
. feature: connect_manager/connect_pool ÀàÔö¼ÓÁËÕë¶Ôÿ¸öÁ¬½Ó³ØÓÐÒ»¸öÆäλÓÚÁ¬½Ó³Ø¼¯ºÏÖеÄϱêË÷Òý
. feature: http_request::request ÖÐÔÀ´Ö»ÄÜÖ¸¶¨ GET/POST Á½ÖÖÇëÇó·½·¨£¬ÏÖÔÚ¿ÉÒÔÖ¸¶¨¶àÖÖÇëÇó·½·¨
. feature: http_header ÔÊÐíÉèÖÃ×Ô¶¨Òå (¼´³ý GET/POST/PUT/CONNECT/PURGEÖ®¸ö) µÄÇëÇóÍ·ÃüÁî×Ö
. feature: memcache ÀàÖ§³ÖÁ÷ʽ¶ÁдÊý¾Ý£¬´Ó¶ø¿ÉÒÔÖ§³Ö´ó value µÄ´æÈ¡·½Ê½
. feature: master_threads ÀàÔÚµ¥¶ÀÔËÐз½Ê½µÄʹÓó¡¾°½Ó½üÓÚÔÚ acl_master ¿ò¼ÜϵÄÔËÐг¡¾°
. feature: master_threads/master_aio/master_proc ÀàÖ§³ÖÔÚµ¥¶ÀÔËÐÐģʽϼàÌý¶à¸öµØÖ·
. feature: acl_cpp_init.cpp ÖÐÌí¼ÓÁË WIN32 ÏÂ¹Ø±Õ DOS ´°¿ÚµÄº¯Êý
. feature: http/memcache Ä£¿éÔö¼ÓÁËÁ¬½Ó³Ø¹ÜÀíÀà
. compile: acl_cpp_init.cpp ÖÐ freopen ·µ»ØµÄÎļþ¾ä±úÒòΪδ±»Ê¹ÓöøÊ¹±àÒëÆ÷±¨¾¯
. compile: Ôö¼ÓÁË Makefile.db ¹¤³ÌÎļþ£¬Ê¹ÓøÃÎļþ±àÒëÔòÐèÒª mysql/sqlite ¿â; Èç¹û²»ÐèÒªÊý¾Ý¿âÏà¹ØµÄ¹¦ÄÜ£¬ÔòʹÓà Makefile ¹¤³ÌÎļþ½øÐбàÒë
. bugfix: memcache ÀàÖе±Á¬½ÓÒì³£ÖжÏÖØÊÔʱ»áÒòÇëÇóÊý¾Ý±»Çåµô¶ø³ö´í£¬ÔÒòÊÇÇëÇóÓëÏìÓ¦¹²ÓÃͬһ¸ö»º³åÇøËùÖ£¬ÏÖ½«ÇëÇ󻺳åÇøÓëÏìÓ¦»º³åÇø·Ö¿ª
. bugfix: memcache.cpp µ±µ÷Óà open º¯ÊýÁ¬½Ó memcached ·þÎñÆ÷ʧ°Üʱ£¬Óà valgrind ¼ì²é³ö¼Ç¼´íÎóÈÕ־ʱÒýÓÃÁËÒ»¸öδ¾³õʼ»¯µÄ±äÁ¿
. samples: Ôö¼ÓÁËÕë¶Ô UDP µÄ²âÊÔÓÃÀý udp_client
. other: lib_acl ¿âÖÐ ACL_EVENT_NOTIFY_RDWR/ACL_EVENT_NOTIFY_TIME º¯Êý½Ó¿Ú¶¨ÒåµÄÐ޸ģ¬ÓëÖ®Ïà¹ØµÄÄ£¿é½øÐÐÁËÐÞ¸Ä
. other: ÒòΪ lib_acl »ù´¡¿âÖÐµÄ ACL_VSTREAM ¶Áд»Øµ÷º¯Êý½Ó¿Ú±ä¸ü£¬µ÷ÕûÁËÓëÖ®Ïà¹ØµÄ²¿·ÖÄÚ²¿½Ó¿Ú£¬Ö÷ÒªÓ°Ïìµ½ÁË ssl_stream/ssl_aio_stream
. other: connpool/http_request_pool/memcache_pool: µ÷ÕûÁ˹¹Ô캯Êý£¬È¥µôÁË×îºóÒ»¸ö²ÎÊý
À´×Ô:¿ªÔ´ÖйúÉçÇø

