2016-06-10 91 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

不要將更多數據複製到目標緩衝區,而不是超出適合的範圍! –