޸ʷб
------------------------------------------------------------------------
260) 2016.5.10
260.1) featur: http_hdr_res.c еĺ http_hdr_res_parse ȡ˶ http_status
ļ飬ԱӦʹԶ״̬

------------------------------------------------------------------------
259) 2016.2.28
259.1) bugfix: http_hdr_req.c з url_part 
258) 2016.2.15
258.1) bugfix: http_hdr_req.c з url_part 

257) 2015.11.6
257.1) bugfix: http_hdr_res.c/http_hdr_req.c пܻΪ main_cache_free
ĵ http_hdr_res_free/http_hdr_req_free ֮ǰöڴͻ

------------------------------------------------------------------------
256) 2015.7.23
256.1) compile: ȥ -pedantic ѡΪ __FUNCTION__ ͻ

255) 2015.7.2
255.1) bugfix: http_hdr.c еĺ http_hdr_print/http_hdr_fprint/http_hdr_sprint
Ӧ˵ HTTP ֶ

254) 2015.6.28
254.1) compile: ֧ VC x64 ±ʹ

253) 2015.1.30
253.1) feature: ڽ HTTP ͷĺ http_hdr_req_line_parse Уȡ
HTTP 󷽷ƣӶӦÿչԼ HTTP 󷽷

252) 2015.1.1
252.1) compile: ̿ʹ clang/clang++ ͨ
------------------------------------------------------------------------
251) 2014.11.27
251.1) bugfix: 239.1) ޸ http_hdr_req.c еĺ  __strip_url_path Ȼ 
⣬ΪпָͬڴַӶµڶ '\0'
Ӧð ACL_VSTRING_RESET/ACL_VSTRING_TERMINATE  acl_argv_split ֮

250) 2014.11.18
250.1) bugfix: proto_snprintf.c к proto_secure_snprintf/proto_securevsnprintf
ڵ _vsnprintf_s ʱӦΪ _TRUNCATE򵱻ıȽСʱVCṩ
API ڲ

249) 2014.8.8
249.1) bugfix: http_hdr_req.c еظʹֲ߳̾ʱ __hdr_reset
еһЩȻ ACL_VSTRING_RESETú겢Ὣ
β 0¾ɵݻᱻظʹ

------------------------------------------------------------------------
248) 2014.5.13
248.1) bugfix: http_hdr_req.c  http_hdr_req_cookies_parse ڴ cookies_table
ϣʱָ ACL_HTABLE_FLAG_KEY_REUSE __add_cookie_item ȴ KEY 
ڴռǰͷˣӶڴǷ

247) 2014.1.11
247.1) compile: ڸ߰汾VC>VC2008) £ʹøΪȫĺ

246) 2013.12.5
246.1) feature: Makefile ֧ solaris 

245) 2013.11.22
245.1) bugfix: http_chat_sync.cں http_res_body_get_sync УΪ
chunked ䷽ʽʱҪ ctx->chunk.chunk_oper = CHUNK_OPER_HEAD

244) 2013.11.6
244.1) compile: http_hdr_res.c/http_hdr_req.cڲֲ߳̾޷
߳ͷţᵼ valgrind 

------------------------------------------------------------------------

243) 2013.10.3
243.1) bugfix: http_chat_async.c  http_res_body_get_async/http_req_body_get_async
ûж ctx->read_cnt  0

242) 2013.9.27
242.1) lib_acl  ACL_EVENT_NOTIFY_RDWR/ACL_EVENT_NOTIFY_TIME ӿڶ 
޸ģ֮صģ(icmp)޸

241) 2013.9.22
241.1) Ϊ lib_acl е ACL_VSTREAM дصӿڱ֮ص
ڲӿڣҪӰ쵽 icmp ģ icmp_stream.c еڲӿ

240) 2013.7.30
240.1) warning: http_hdr_req.c::http_hdr_req_new() ڲʹֲ߳̾
 valgrind ʱᱨڴй¶棬ͨ߳нͷȥ˴˾

239) 2013.7.23
239.1) bugfix: http_hdr_req.c->http_hdr_req_create()  URL ʱ

238) 2013.5.22
238.1) performance: http Э HTTP ͷĽٶȣԭÿ 5 
ÿ 17 
238.2) bugfix: http Э http_hdr_reset ж hh ǷϷʱ

237) 2013.3.24
237.1) bugfix: http_hdr_req.c->__strip_url_path µһ / ʧ

236) 2012.12.30
236.1) feature: smtp_client ģ smtp_printf 㷢

235) 2012.12.17
235.1) feature:  smtp Эģ smtp_greet ֱͨӵ
smtp_helo/smtp_ehlo

234) 2012.11.7
334.1) feature:  smtp Э֧

233) 2012.7.10
233.1) compile: ֧ VC2003 Ԥ빦ܣӶʹٶȸ

233) 2012.4.29
233.1) bugfix: Ϊ acl_aio_request_timer ʱ䵥λԭΪ΢룬
Ҫ޸ icmp_chat_aio.c еʱ䵥λ

232) 2012.4.9
232.1) ͨӺǰ׺__attribute__((format(printf,3,4))) 
ʶβ

231) 2011.6.21
231.1) bugfix: http_util.c,  http_util_req_new е http_hdr_req_host
 NULL ᵼ http_util_req_new  core
231.2) http_hdr_req.c: http_hdr_req_create ıȡ Host ֶεķʽ

230) 2011.6.15
230.1) http_hdr_req.c: http_hdr_req_create() γɵ HTTP ʽΪ
{METHOD} http://xxx.xxx.xxx/xxx?xxx HTTP/1.x
øʽ tomcat ʶڸΪ:
{METHOD} /xxx?xxx HTTP/1.x

229) 2011.4.18
229.1) performance: http_hdr_req.c, http_hdr_res.c ֲ߳̾ڴصĻ
ܣظʹ HTTP ͷֻҪڳʼʱһ http_hdr_cache 

228) 2011.4.11
228.1) performance: http_req_body_get_sync(), http_res_body_get_sync() ڲ
 ctx ʱԭΪ׼Ϊһڻ
жӦԻᵼ HTTP £Ӧ
Ӷ½ڽ ctx ڸΪÿһӦĻỰΪ׼

227) 2010.11.23
227.1) ޸һЩĺֵ
227.2) bugfix: http_hdr.c, http_hdr_entry_value ڲ off ־λ
ӦΪЧ

226) 2010.11.22
226.1) bugfix: http_hdr_req.c
http_hdr_req_cookies_parse() е cookies_table жϷʽ

225) 2010.2.2
225.1) http_chat_asyn.c: body_can_read() еص -1 ʱҲֱӷ -1

224) 2010.1.22
224.1) performance: http_chat_async.c, 첽Ḷ́
Ч

223) 2010.1.11
223.1) feature:  http_util.c, Էǳʹ http Эĺ
223.2) samples:  http/ Ŀ¼µ

222) 2010.1.8
222.1) http_chat_async.c: ȥõĻص

221) 2010.1.1
221.1) HTTPЭ첽ĽӿڣĿǰṩֶHTTPͷķʽ, 
ṩƽӿûöHTTPͷķʽ

220) 2009.12.30 - 12.31
220.1) http_chat_async.c: 첽Ŀ, ʹˣ
ͬʱ(עṴӷʽӶĻصԭֻעһص
µ acl_aio ĿעصķʽҲעԼ
ص)
220.2) http_chat_async.c: ṩһ첽ģʽ

219) 2009.12.16
219.1) lib_http_struct.h: ȥ HTTP_HDR_RES õĳԱֶ

218) 2009.12.14
218.1) http_hdr_req.c:  http_hdr_req_redirect Ϊ http_hdr_req_rewrite,
 http_hdr_req_redirect2 Ϊ http_hdr_req_rewrite2
218.2) http_hdr_req.c: http_hdr_req_url() ȥ __thread ʽʹ߳
ֲķʽΪ acl_pthread_tls_get() ʽ lib_protocol ⱻ
߶̬ʱԱ⶯̬ʱֲ߳̾õ

217) 2009.12.4
217.1) feature: http_hdr.c  http_hdr_entry_replace2()/5 ֧ HTTP ͷ
ַĶƥ滻

216) 2009.12.3
216.1) http_hdr.c: ڷ keep-alive ʱ chunked ж,
Ϊ HTTP1.1  chunked ģʽ, Բ Connection: keep-alive ݼ
ɱֳ, û Connection: keep-alive  chunked 
ֳ.

215) 2009.11.26
215.1) http: ͷļ, Ӷʹ
215.2) http_hdr_req.c: ˺ http_hdr_req_url()/1 ȡURL

214) 2009.11.11
214.1) bugfix: http_hdr_req.c: __add_request_item() ظʱڴй¶

213) 2009.11.10
213.1) http_hdr_entry_value, http_hdr_entry ֵȥ const 

212) 2009.6.22
212.1) Makefile: ͨ make all_lib ϲ lib_acl.a  lib_protocol.a,
ûʹ lib_protocol.a ʱͲٰ lib_acl.a 

211) 2009.4.9
211.1) http ЭеͨŲֽʺϵʹͬͨſ첽ͨſ
Щĺһ
211.2) imcp Эе icmp_stat_host()/2 ṹ ICMP_HOST ڲ
ΪⲿֱӿãӶӦõʹ
211.3) imcp е ping ʱ侫ϸϸԭACLwin32ƽ̨µ
gettimeofday()/2 ľȸϸ

210) 2009.4.8
210.1)  ʹHTTP첽ͨſãͬʱȥHTTPͬͨſоɵͨģʽ

209) 2009.4.3
209.1) Ϊ aio ޸ģԶHTTP첽ͨŲֽ޸

208) 2009.3.6
208.1) feature: http_tmpl.c,  1xx, 2xx, 3xx Ϣʾ

207) 2009.2.26
207.1) Ϊ lib_acl е aio ģһЩµĹԣ޸ 
http_chat_async.c ģ飬ʹ֮첽IO֮ǰIO

206) 2009.2.17
206.1) feature: http/http_tmpl.c  http_tmpl_title()/1 ڸ
HTTPӦʾϢ

205) 2009.1.5
205.1) comment: icmp/ ͷļ JavaDoc ʽע
205.2) icmp: ޸ĸӿڵĶ巽ʽ

19) 2009.1.1-2009.1.3
19.1) ˹Ŀ¼(vc6, vc2003, vc2008)Ŀ¼ src/http, src/icmp,
include/http, include/icmp, ͳһЭ֧ͷļ lib_protocol.h
19.2)  ICMP Эʵ֣Ŀǰ֧ ping 

18) 2008.12.4
18.1) feature: http_chat_sync.c, ˶ʱԤ幦ܣ߶Чʣ
ͬʱṩ˿ƽӿڣöʱǷҪԤ

17) 2008.11.21
17.1) feature: http_hdr_req.c  http_hdr_req_redirect2() ӿڣ
ԭеͷضдͷ

16) 2008.10.23
16.1) feature:  http_hdr_req_range  http_hdr_res_range ƫ
ĺ

15) 2008.10.11
15.1) ½HTTPЭͷļעһ

14) 2008.10.10
14.1) bugfix: ޸йsscanf 64λʱBUGӰĺ
http_chat_sync.c: chunked_hdr_get2(), http_chat_async: chunked_hdr_get_ready()

13) 2008.10.9
13.1) workaround: VC6VC2003뻷µĹ̬֯
lib_http.dll, lib_http.lib, lib_http_d.dll, lib_http_d.lib ̬
lib_http_vc6.lib, lib_http_vc6d.lib, lib_http_vc2003.lib, lib_http_vc2003d.lib
ж̬VC2003ģVC6ʹ

12) 2008.10.7
12.1) bugfix: HTTP_HDR ṹԱchat_ctxchat_free_ctx_fn
http_hdr_clone() ʱӦýֵգͷͬһڴɴ
ʣ֮ԱΪ˱HTTP첽ͨʱͨACL_VSTREAM 
acl_vstream_add_close_handle() صͷź⣬HTTPͬͨȻ
acl_vstream_add_close_handle() ģʽصͷźҪĳ첽ͨŵͷģʽ

11) 2008.10.6
11.1) compile bugfix: ڱ붯̬ʱûнhttp_hdr_res_get_sync

10) 2008.9.29
10.1) feature: ޸ͷļĺ壬 HTTP_API 壬
DLLʽ, Էʹ HTTP ⣬ӦDLLʽʹ
HTTP ʱҪһԤ꣺HTTP_DLL

9) 2008.9
9.1)  http_chat_async.c еĲֽӿ

8) 2008.7.23
8.1) : Ѷ޸ĵAPACHE⣬ԼʶHTTPͷֶβȡʱر
ķʽǰڹرĳһHTTPʱͨýһĸ滻Ϊ "_" ķʽ(cresondo
)ַQQķ⣬ڲķĳһ

7) 2008.7.17
7.1) safety: http_chat_async.c  ctx_nested_check() Աرջʱ
صǶ׵

6) 2008.3.19
6.1) feature: ֧ content-length  unsigned int ֵ

5) 2008.3.10
5.1) feature: http_hdr_req.c, http_hdr_req_redirectԱӦýض

4) 2008.3.6
4.1) bugfix: http_hdr_req.c, ɿͻ˵ͷлȡ Host ֶʱ󷽷Ϊ
CONNECTʱûHOSTֶΣȡHOSTϢһܣʱԳ
 CONNECT ip[domain]:port HTTP/1.1  ip[domain] HOSTϢ

url
3) 2008.3.2
3.1) features: http_chat_sync.c, һͬȡݵĺӿ

2) 2008.2.13
2.1) features: add http_hdr_clone() in http_hdr.c, add http_hdr_res_clone()
in http_hdr_res.c, add http_hdr_req_clone() in http_hdr_req.c

1) 2008.1.8
1.1) bugfix: http_hdr_req.c->__add_request_item__add_cookie_itemжԱ
Ĵ洢ԭδظᵼڴй©
