2016-06-10 320 views
-1

我无法发送大量数据的邮件。 在执行发送邮件时出现分段错误。 谷歌搜索后发现,设置CURL_MAX_WRITE_SIZE可以解决问题,但这不能在我的应用程序中设置。 我试过下面,如何在curl中设置CURL_MAX_WRITE_SIZE?

#ifdef CURL_MAX_WRITE_SIZE 
#undef CURL_MAX_WRITE_SIZE 
#define CURL_MAX_WRITE_SIZE 131072 
#endif 

而且回调函数是

size_t mail_payload_source(void *ptr, size_t size, size_t nmemb, void *userp){ 
struct mail_upload_status *upload_ctx = (struct mail_upload_status *)userp; 
const char *data; 
if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) { 
    return 0; 
} 
data = mail_char_ary_of_pntrs[upload_ctx->lines_read]; 
if(data) { 
    size_t len = strlen(data); 
    memcpy(ptr, data, len); 
    upload_ctx->lines_read++; 
    return len; 
} 
return 0;} 

任何人都可以请建议解决类似的问题?

+0

没有足够的上下文让潜在的回答者找出如何帮助你。你的问题与卷曲有什么关系? – Leon

+0

“res = curl_easy_perform(curl);” –

回答

0

通过将CURL_MAX_WRITE_SIZE的值设置为更高的值来重新配置来解决此问题。

+0

这是修复你的代码的完全错误的方法... –

+0

那么你能告诉一个好方法吗? –

+0

不要将更多数据复制到目标缓冲区,而不是超出适合的范围! –