acl 3.0.13 °æ±¾ (ÏîÄ¿Ö÷Ò³£ºhttps://sourceforge.net/projects/acl/) ·¢²¼ÁË£¬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 µÄC++(lib_acl_cpp)Ä£¿éÔö¼ÓÁË Ï̼߳°Ï̳߳ØÀà¿â¡£
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
. acl_debug.c: µ÷ÕûÁ˲ÎÊýµÄ±íʾ·½·¨£¬µ÷ÕûºóµÄµ÷ÊÔ±êÇ©¼°¼¶±ð×Ö·û´®µÄ¸ñʽ: 1:1, 2:10, 3:8... or 1:1; 2:10; 3:8...
. feature: acl_master ·þÎñÆ÷Ä£°åÌí¼ÓÁË master_debug ÅäÖÃÏ·½±ãÓû§ÔÚʹÓà acl µÄ·þÎñÆ÷¿ò¼Üʱµ÷ÊÔÈÕÖ¾
. feature: acl_aio_app_main.c/acl_ioctl_app_main.c, Ôö¼ÓÁËÅäÖÃÏî master_deny_banner ÔÊÐíÓû§×Ô¶¨Òå¾Ü¾øÁ¬½ÓµÄÄÚÈÝÐÅÏ¢
. feature: acl_pthread_pool.c Ôö¼ÓÁË acl_pthread_pool_qlen º¯Êý£¬Ìṩµ±Ç°Ï̳߳ضÓÁÐÖÐδ±»´¦ÀíµÄÈÎÎñÊýÁ¿
. performance: acl_vstream.c£¬½« __vstream_sys_read µÄ¶Á¹ý³Ì½øÐÐÁËÓÅ»¯£¬¸ÄÃûΪ __sys_read£¬ÒÔÔÊÐí½«Óû§ÊäÈëµÄ»º³åÇø×öΪϵͳ read µÄÄÚ´æµØÖ·£¬´Ó¶øÔÚµ÷Óà acl_vstream_readn/acl_vstream_read ʱ±ÜÃâÁËÊý¾ÝµÄ¶þ´Î¿½±´
. compile: acl_aio_app_main.c, ÆäÖÐÔÚµ÷Óà write ʱ£¬ÐèÒªÅжϷµ»ØÖµ£¬·ñÔò»áÔڸ߰汾 gcc Éϱ¨¾¯¸æ
. bugfix: acl_mylog.c, µ±Í¨¹ý UDP ·½Ê½¼Ç¼ÈÕ־ʱ£¬ÒòΪ֮ǰ acl_vstream.c ÔÊÐí×¢²áÍⲿ½Ó¿ÚµÄ¸Ä±ä¶ø·¢ÉúÁ˲»¼æÈÝÐÔÎÊÌâ
. bugfix: acl_xml_util.c, acl_xml_tag_add() ÔÚµ÷Óà acl_token_tree_add ʱ£¬µÚÈý¸ö²ÎÊýÓ¦¸Ãµ÷Óà ACL_TOKEN_F_STOP£¬ÔÀ´ÊÇ ACL_TOKEN_F_PASS
¶þ¡¢¹¦ÄܷḻµÄC++¿â£ºlib_acl_cpp
. feature: Ôö¼ÓÁËÏß³ÌÀà(stdlib/thread)¼°Ï̳߳ØÀà(stdlib/thread_pool)
. feature: thread Àà·ÖÀë³öÒ»¸ö»ùÀà thread_job£¬´Ó¶øÊ¹Âß¼¸üΪÇåÎú
. feature: µ±Ê¹Óà GCC ½øÐбàÒëʱ£¬Õë¶ÔËùÓоßÓбä²ÎµÄº¯Êý½Ó¿Ú¶¨ÒåÌí¼ÓÁËÊôÐÔÏÞ¶¨---__attribute__((format(printf, n, m)))£¬ÕâÑù±ãÓÚÔÚ±àÒëÆÚ¾ÍÄÜ·¢ÏÖÒò²ÎÊýʹÓò»µ±¶øµ¼ÖµĴíÎó
. feature: HttpServletResponse ÀàÖ§³Ö Transfer-Encoding: chunked ´«Ê䷽ʽ
. feature: connect_manager/connect_pool ÔÊÐí¶¯Ì¬Ìí¼Ó¡¢É¾³ýÁ¬½Ó³Ø¶ÔÏó
. bugfix: master_udp.cpp£¬µ±ÒÔ alone ·½Ê½ÔËÐÐʱ£¬Ã»Óн« socket_stream ¸³¸ø ACL_VSTREAM::context£¬µ¼ÖÂÔÚ service_main ʱÓÖÖØÐ´ò¿ªÒ»´Î
. bugfix: thread.cpp£¬µ±Ïß³ÌΪ·ÖÀ뷽ʽ´´½¨Ê± thread::thread_run ÔÚµ÷ÓÃÍêÐ麯Êý run ºó²»µÃÔÙÒýÓÃÏ̶߳ÔÏóµÄ return_arg_£¬·ñÔò»áÔì³ÉÄÚ´æ·Ç·¨·ÃÎÊ
. bugfix: db/db_mysql.cpp, ÔÚ´ò¿ª mysql Á¬½ÓʱÉèÖÃ×Ö·û¼¯£¬ÅжÏÊÇ·ñÉèÖóɹ¦µÄ·½·¨ÓÐÎó
. bugfix: master_udp.cpp, master_udp::service_main() ÖÐµÄ socket_stream ÊÇÁÙʱ¶ÑÕ»±äÁ¿£¬Èç¹û±»Óû§ÍⲿÒýÓÃÔò¿ÉÄÜÔì³ÉÄÚ´æ·Ç·¨·ÃÎÊ
. samples: Ôö¼ÓÁË master_udp_threads£¬¸ÃÀý×Ó½«Ï̳߳ØÓë master_udp Ä£°å½áºÏ
. samples: Ôö¼ÓÁ˲âÊÔÓÃÀý thread_client£¬Ò»¸ö¶àÏß³ÌÍøÂç¿Í»§¶Ë³ÌÐò
. samples: Ôö¼ÓÁ˲âÊÔÓÃÀý thread ÓÃÒÔ²âÊÔÏß³ÌÀà
. samples: Ôö¼ÓÁ˲âÊÔÓÃÀý thread_pool ÓÃÒÔ²âÊÔÏ̳߳ØÀà
. samples: Ìí¼ÓÁË master_aio_proxy ÓÃ×÷´¿ TCP ·Ç×èÈû´úÀí
ÏîÄ¿Ö÷Ò³£ºhttp://sourceforge.net/projects/acl/
ÏÂÔØµØÖ·£ºhttp://sourceforge.net/projects/acl/files/
À´×Ô:¿ªÔ´ÖйúÉçÇø

