mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-11 01:17:35 +08:00
345 lines
15 KiB
Plaintext
345 lines
15 KiB
Plaintext
修改历史列表:
|
||
|
||
266) 2019.8.7
|
||
266.1) bugfix: http_chat_async.c 中在 hdr_can_read() 回调用户注册的函数时,如果
|
||
回调函数返回-1则应该关闭连接
|
||
|
||
265) 2019.7.4
|
||
265.1) optimize: http_hdr.c 中,keep_alive 字段分三种情况:没有设置,保持长连接,
|
||
以及不保持长连接
|
||
|
||
264) 2019.6.5
|
||
264.1) bugfix: http_chat_async.c 在读取数据体时有问题
|
||
|
||
------------------------------------------------------------------------
|
||
263) 2018.4.27
|
||
263.1) feature: 针对 HTTP 请求 uri 中的 "?" 问号被转义成 "%3F" 的情况,可以做兼容性处理
|
||
|
||
262) 2017.8.16
|
||
262.1) bugfix: icmp 模块存在严重 BUG,当超时的响应包再次到达时会影响结果显示,
|
||
应该严格检验响应包与发送包的序列号是否相等
|
||
|
||
261) 2017.8.15
|
||
261.1) bugfix: icmp_stream.c 中函数 icmp_read 应该设置 read_ready = 0,以清除
|
||
在异步 IO 模式与 event 事件引擎设置的该标志位,否则会造成 IO 死循环
|
||
261.2) feature: icmp_chat.c 中将 ICMP_CHAT::tid 由原来的线程 ID 改为原子加值,
|
||
以支持协程模式下使用
|
||
261.3) feature: 将 ICMP_HOST::delay 的单位由秒调整为毫秒
|
||
261.4) compatibility: icmp_pkt.c 中在创建 ping 数据包时,数据载荷最好置为0,
|
||
否则有些移动的路由器会阻挡
|
||
|
||
260) 2016.5.10
|
||
260.1) feature: 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 功能在时间精度上更细,原因是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_ctx,chat_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,中对变量对
|
||
的存储原来未处理重复变量名的情况,会导致内存泄漏。
|