ghttp作为客户端下载大文件的问题
2017-02-15 18:47
169 查看
使用开源库ghttp作为http client,板子测试发现当下载大文件时出现崩溃情况;查了,发现问题是:http_trans.c中http_trans_read_into_buf(http_trans_conn *a_conn)函数a_conn->io_buf = realloc(a_conn->io_buf,a_conn->io_buf_len + a_conn->io_buf_io_left);a_conn->io_buf_len += a_conn->io_buf_io_left;这段代码有点问题,当下载很大文件时,
a_conn->io_buf_len + a_conn->io_buf_io_left就会变得超大,在内存有限制的嵌入式板子上就会出现返回的指针为空的情况;最终崩溃的表现在调用flush时:
static void flush_response_body(http_resp *a_resp, http_trans_conn *a_conn) { if (a_resp->body != NULL) { free(a_resp->body); } a_resp->flushed_length += a_resp->body_len; a_resp->body_len = a_conn->io_buf_alloc; a_resp->body = malloc(a_conn->io_buf_alloc + 1); memset(a_resp->body, 0, a_conn->io_buf_alloc + 1); memcpy(a_resp->body, a_conn->io_buf, a_conn->io_buf_alloc); /* clean the buffer */ http_trans_buf_reset(a_conn); }
memcpy(a_resp->body, a_conn->io_buf, a_conn->io_buf_alloc);崩溃,即
a_conn->io_buf为空指针
临时解决方法:
把大文件进行分割成小的单位进行断点下载。
相关文章推荐
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- SAS问题报告:在SAS 的INTRNET中通过HTTP下载文件到表中发生错误
- 转载: 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- Response对象、HttpServletResponse简介、处理字节编码问题、实现动态文件下载
- tomcat下部署javaweb项目,解决http下载rar文件,乱码问题
- Response对象、HttpServletResponse简介、处理字节编码问题、实现动态文件下载
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- 在与sap系统集成时遇到的问题.sap系统发布一webservice,java(xfire)作为客户端调用,调用时抛出如下异常: Wrong Content-Type and empty HTTP-Body received: ("HTTP Code 20
- 解决把水晶报表下载到客户端过程中,出现下载整个页面(.aspx)或者直接载web页中打开word文件的问题!
- HttpClient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射
- strtus2 批量下载 中文问题、压缩文件等 ------ 讨论struts2工作流程 (摘自:http://www.blogjava.net/xcp/archive/2009/10/30/downloadlist.html)
- httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- HTTP 错误 404.3 NOT FOUND 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加MIME映射。
- IIS中预览错误问题的解决办法(HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射 )
- Android webview通过http get下载文件下载两次的问题及解决方法