acl/lib_protocol/changes.txt

275 lines
9.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

修改历史列表:
------------------------------------------------------------------------
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 功能在时间精度上更细原因是ACL库中win32平台下的
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: 重新整理了VC6、VC2003编译环境下的工程组织将动态库以
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中对变量对
的存储原来未处理重复变量名的情况,会导致内存泄漏。