On 3/11/2015 12:35 PM, 兰天 wrote:
My write callback function is follow:
int Writer(char *data, size_t size, size_t nmemb, void *stream)
{
CURL_DATA_INFO *out = (CURL_DATA_INFO *) stream;
unsigned int uiSizes = size * nmemb;
unsigned int uiLoadContentLen = 0;
if (NULL == out || 0 == size || 0 == nmemb)
{
LOG_ERR("NULL == out || 0 == size || 0 == nmemb");
//return -1;
}
if ( uiSizes <= out->uiBufLen - out->uiWriteBufLen)
{
//LOG_DBG("uiSizes:%u,buffer length:%u,writen
lengh:%u",uiSizes,out->uiBufLen, out->uiWriteBufLen);
memcpy(out->pszDownBuf + out->uiWriteBufLen, data, uiSizes);
out->uiWriteBufLen += uiSizes;
if(out->uiWriteBufLen > out->uiBufLen)
{
LOG_ERR("invalid write buf len:%u", out->uiWriteBufLen);
}
uiLoadContentLen = uiSizes;
return uiLoadContentLen;
}
else
{
LOG_ERR("too large file, size=%u, writen=%u", uiSizes,
out->uiWriteBufLen);
//return -2;
}
//return 0;
}
after I running the program for 2 hours ,the programe stop
with the follow infomations:
* Failed writing body (1 != 16384)
* Closing connection #21
* Failed writing body (1 != 16384)
* Closing connection #7
* Operation timed out after 40000 milliseconds with 186810
out of 269621 bytes received
* Closing connection #58
Thank you for not top posting however your mail client is now garbling
the quoting. The e-mail you sent makes your reply look like it's a reply
I made. You may be able to fix that by hitting enter twice below
whatever you've quoted.
As I said you need to review CURLOPT_WRITEFUNCTION [1]. Your function
prototype should be:
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
Your callback must always return a value and it's not doing that. Also
you need to properly handle 0 bytes, for example if(!uiSizes) return 0.
I'm still curious what version of libcurl is actually loaded here. If
you could dump the version as I showed in my previous e-mail that would
help.
[1]: http://curl.haxx.se/libcurl/c/CURLOPT_WRITEFUNCTION.html
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html