libevent http-server sample读非文本文件死循环的问题
来源:互联网 发布:小型物流仓储软件 编辑:程序博客网 时间:2024/06/06 01:50
最近在研究libevent时发现http-server,于是顺手拿来测试一下,结果在客户端请求非文本格式的文件时,导致http-server死掉。这就奇怪了libevent的测试程序怎么会有问题呢?换boost的httpserver测试,结果很ok。拿起google见网友也遇见这个问题,很开心,以为可以得到解决办法了,但人家没给具体解决方案。在此略说一下,供后来者开心一刻。
用vc9跟踪调试发现原因是send_document_cb中调用的函数evbuffer_add_file在下
while (length) {
read = evbuffer_readfile(tmp, fd, (ev_ssize_t)length);
if (read == -1) {
evbuffer_free(tmp);
return (-1);
}
length -= read;
}
死循环。原来在前面是用open(whole_path, O_RDONLY)打开的文件,默认是文本方式打开,会误把二进制的00作为结束符,导致while (length) 一直为真,所以......。改为open(whole_path, O_RDONLY|_O_BINARY),问题就解决了。
- libevent http-server sample读非文本文件死循环的问题
- 基于libevent的http server
- 基于Libevent的HTTP Server
- 基于Libevent的HTTP Server
- 死循环的问题
- HashMap 死循环的问题
- make 死循环的问题
- sample-http-server
- libevent 实现http server
- libevent实现http server
- libevent实现http server
- libevent http server multithread
- 程序陷入死循环问题的解决
- json+hibernate死循环问题的解决方法
- 关于触发器死循环的问题
- 多线程下HashMap的死循环问题
- 多线程下HashMap的死循环问题
- try-catch死循环的问题
- 新东方老师最新笑话完全版
- 数据完整性约束
- Jdbc的使用
- 一JDBC调用存储过程
- request
- libevent http-server sample读非文本文件死循环的问题
- 注册电气工程师考试考取事宜与考试大纲
- junit3.8实践详解
- <交易心理分析> 读后感 摘要
- 获取WCF所支持的绑定类型
- 检查Android网络连接是否可用
- ADF: 理解Manage bean 的scope
- ABAP [div '/'] 的区别与妙用
- 命名规则