2013-02-08 55 views
0

我開發了一個將文件上傳到Dropbox的應用程序。我使用Libcurl(libcurl-7.21.7)和Openssl(0.9.8e)api將文件上傳到Dropbox。我注意到,有時候我的應用程序因服務器無響應而崩潰。我得到在控制檯上的錯誤是libssl讀取錯誤131導致應用程序崩潰

SSL閱讀:錯誤:00000000:LIB(0):FUNC(0):原因(0),錯誤號131關閉連接#0

我已經在實施的CURL_TIMEOUT我POST請求,但我仍然面臨這次崩潰。如果超時時間很短,我會不斷得到上傳錯誤,如果時間太長,那麼應用程序崩潰會導致上述錯誤。有沒有辦法解決請求中看到的問題以避免崩潰?

在調試時進一步發現崩潰實際上發生在ssl庫中,因爲應用程序崩潰。

請稍等一下就可以了這個?我使用

代碼是:

CURL *curl; 
curl = curl_easy_init(); 
    curl_global_init(CURL_GLOBAL_ALL); 
    curl_easy_setopt(curl, CURLOPT_CAINFO, NULL);   
    curl_easy_setopt(curl, CURLOPT_CAPATH, NULL); 
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2); 
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_easy_setopt(curl, CURLOPT_URL,NOTIFICATIONURL); 
    curl_easy_setopt(curl, CURLOPT_POST, 1L); 
    curl_easy_setopt(curl, CURLOPT_FORBID_REUSE,1); 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS,data()); 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, datalength); 
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); 
    long int maxconnectiontime = 600; 
    curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT,maxconnectiontime); 
    long int maxtime = 1200; 
    curl_easy_setopt(curl, CURLOPT_TIMEOUT,maxtime); 

    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); 
    res = curl_easy_perform(curl); 

    if(res) 
    { 
      log("\n nCURL ERROR curl_easy_perform return %s [%d]",curl_easy_strerror(res),res); 
    } 

    curl_slist_free_all(headers); 
    curl_global_cleanup(); 
    curl_easy_cleanup(curl); 
+0

我仍然停留在這個有人能。請幫助這個? –

回答

0

的問題可以通過在客戶端代碼的信號相加「SIGPIPE」和SIGALRM」,而忽略來解決

相關問題