easy: do not ignore poll() failures other than EINTR

This commit is contained in:
Kamil Dudka 2013-03-11 16:57:25 +01:00
parent 83a42ee20e
commit 491e026ccd
2 changed files with 11 additions and 2 deletions

View File

@ -53,6 +53,7 @@ This release includes the following bugfixes:
o docs: updates HTML index and general improvements
o curlbuild.h.dist: enhance non-configure GCC ABI detection logic
o sasl: Fixed null pointer reference when decoding empty digest challenge [8]
o easy: do not ignore poll() failures other than EINTR
This release includes the following known bugs:

View File

@ -441,11 +441,19 @@ CURLcode curl_easy_perform(CURL *easy)
while(!done && !mcode) {
int still_running;
int ret;
mcode = curl_multi_wait(multi, NULL, 0, 1000, NULL);
mcode = curl_multi_wait(multi, NULL, 0, 1000, &ret);
if(mcode == CURLM_OK) {
if(ret == -1) {
/* poll() failed not on EINTR, indicate a network problem */
code = CURLE_RECV_ERROR;
break;
}
if(mcode == CURLM_OK)
mcode = curl_multi_perform(multi, &still_running);
}
/* only read 'still_running' if curl_multi_perform() return OK */
if((mcode == CURLM_OK) && !still_running) {