diff --git a/docs/examples/fopen.c b/docs/examples/fopen.c index 6fe5c0f9fb8c6e9b6b21a39855ec9e01c7b4de70..c26c0de04ca2d460ec1271ce54ed3a1f08aa56db 100644 --- a/docs/examples/fopen.c +++ b/docs/examples/fopen.c @@ -128,6 +128,7 @@ static int fill_buffer(URL_FILE *file, size_t want) fd_set fdexcep; struct timeval timeout; int rc; + CURLMcode mc; /* curl_multi_fdset() return code */ /* only attempt to fill buffer if transactions still running and buffer * doesnt exceed required size already @@ -158,15 +159,31 @@ static int fill_buffer(URL_FILE *file, size_t want) } /* get file descriptors from the transfers */ - curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); + mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially - in case of (maxfd == -1), we call select(0, ...), which is basically - equal to sleep. */ + if(mc != CURLM_OK) + { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); + break; + } - rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + /* On success the value of maxfd is guaranteed to be >= -1. We call + select(maxfd + 1, ...); specially in case of (maxfd == -1) we call + select(0, ...), which is basically equal to sleeping the timeout. On + Windows we can't sleep via select without a dummy socket and instead + we Sleep() for 100ms which is the minimum suggested value in the + curl_multi_fdset() doc. */ + +#ifdef _WIN32 + if(maxfd == -1) { + Sleep(100); + rc = 0; + } + else +#endif + { + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + } switch(rc) { case -1: diff --git a/docs/examples/imap-multi.c b/docs/examples/imap-multi.c index 601205a087931914af8a10160cf72f2db0f2b5a4..c8c67ff87bac455f204e7793399654256adb9e0f 100644 --- a/docs/examples/imap-multi.c +++ b/docs/examples/imap-multi.c @@ -88,6 +88,7 @@ int main(void) fd_set fdexcep; int maxfd = -1; int rc; + CURLMcode mc; /* curl_multi_fdset() return code */ long curl_timeo = -1; @@ -109,15 +110,32 @@ int main(void) timeout.tv_usec = (curl_timeo % 1000) * 1000; } - /* Get file descriptors from the transfers */ - curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd); + /* get file descriptors from the transfers */ + mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd); - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially in - case of (maxfd == -1), we call select(0, ...), which is basically equal - to sleep. */ - rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout); + if(mc != CURLM_OK) + { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); + break; + } + + /* On success the value of maxfd is guaranteed to be >= -1. We call + select(maxfd + 1, ...); specially in case of (maxfd == -1) we call + select(0, ...), which is basically equal to sleeping the timeout. On + Windows we can't sleep via select without a dummy socket and instead + we Sleep() for 100ms which is the minimum suggested value in the + curl_multi_fdset() doc. */ + +#ifdef _WIN32 + if(maxfd == -1) { + Sleep(100); + rc = 0; + } + else +#endif + { + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + } if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) { fprintf(stderr, diff --git a/docs/examples/multi-app.c b/docs/examples/multi-app.c index a5f71c5ac66d69dc5f534e7a747d1b972dd05553..bf0f11ad5bbd02c0410f99fa4dd6b63a3033e7b0 100644 --- a/docs/examples/multi-app.c +++ b/docs/examples/multi-app.c @@ -73,6 +73,7 @@ int main(void) do { struct timeval timeout; int rc; /* select() return code */ + CURLMcode mc; /* curl_multi_fdset() return code */ fd_set fdread; fd_set fdwrite; @@ -99,15 +100,31 @@ int main(void) } /* get file descriptors from the transfers */ - curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); + mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially in - case of (maxfd == -1), we call select(0, ...), which is basically equal - to sleep. */ + if(mc != CURLM_OK) + { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); + break; + } - rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + /* On success the value of maxfd is guaranteed to be >= -1. We call + select(maxfd + 1, ...); specially in case of (maxfd == -1) we call + select(0, ...), which is basically equal to sleeping the timeout. On + Windows we can't sleep via select without a dummy socket and instead + we Sleep() for 100ms which is the minimum suggested value in the + curl_multi_fdset() doc. */ + +#ifdef _WIN32 + if(maxfd == -1) { + Sleep(100); + rc = 0; + } + else +#endif + { + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + } switch(rc) { case -1: diff --git a/docs/examples/multi-debugcallback.c b/docs/examples/multi-debugcallback.c index 8eedcee5b543f41347c19a4d6150141c9791c87f..31dec5472a2d91f1efc27b1b19955c6059547c85 100644 --- a/docs/examples/multi-debugcallback.c +++ b/docs/examples/multi-debugcallback.c @@ -147,6 +147,7 @@ int main(void) do { struct timeval timeout; int rc; /* select() return code */ + CURLMcode mc; /* curl_multi_fdset() return code */ fd_set fdread; fd_set fdwrite; @@ -173,15 +174,31 @@ int main(void) } /* get file descriptors from the transfers */ - curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); + mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially in - case of (maxfd == -1), we call select(0, ...), which is basically equal - to sleep. */ + if(mc != CURLM_OK) + { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); + break; + } - rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + /* On success the value of maxfd is guaranteed to be >= -1. We call + select(maxfd + 1, ...); specially in case of (maxfd == -1) we call + select(0, ...), which is basically equal to sleeping the timeout. On + Windows we can't sleep via select without a dummy socket and instead + we Sleep() for 100ms which is the minimum suggested value in the + curl_multi_fdset() doc. */ + +#ifdef _WIN32 + if(maxfd == -1) { + Sleep(100); + rc = 0; + } + else +#endif + { + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + } switch(rc) { case -1: diff --git a/docs/examples/multi-double.c b/docs/examples/multi-double.c index 91422e6e2ddb2e50a6174c92cc428993b2996a02..df0922a1c9fb299150e77f881d1027f094937aa4 100644 --- a/docs/examples/multi-double.c +++ b/docs/examples/multi-double.c @@ -62,6 +62,7 @@ int main(void) do { struct timeval timeout; int rc; /* select() return code */ + CURLMcode mc; /* curl_multi_fdset() return code */ fd_set fdread; fd_set fdwrite; @@ -88,15 +89,31 @@ int main(void) } /* get file descriptors from the transfers */ - curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); + mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially in - case of (maxfd == -1), we call select(0, ...), which is basically equal - to sleep. */ + if(mc != CURLM_OK) + { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); + break; + } - rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + /* On success the value of maxfd is guaranteed to be >= -1. We call + select(maxfd + 1, ...); specially in case of (maxfd == -1) we call + select(0, ...), which is basically equal to sleeping the timeout. On + Windows we can't sleep via select without a dummy socket and instead + we Sleep() for 100ms which is the minimum suggested value in the + curl_multi_fdset() doc. */ + +#ifdef _WIN32 + if(maxfd == -1) { + Sleep(100); + rc = 0; + } + else +#endif + { + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + } switch(rc) { case -1: diff --git a/docs/examples/multi-post.c b/docs/examples/multi-post.c index 965a2c3f6958c89d803a7bc9ad6683c3f31e4860..a6cc8683cd2297ffbfd190244c86bcc2a10d5bd0 100644 --- a/docs/examples/multi-post.c +++ b/docs/examples/multi-post.c @@ -83,6 +83,7 @@ int main(void) do { struct timeval timeout; int rc; /* select() return code */ + CURLMcode mc; /* curl_multi_fdset() return code */ fd_set fdread; fd_set fdwrite; @@ -109,15 +110,31 @@ int main(void) } /* get file descriptors from the transfers */ - curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); + mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially in - case of (maxfd == -1), we call select(0, ...), which is basically equal - to sleep. */ + if(mc != CURLM_OK) + { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); + break; + } - rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + /* On success the value of maxfd is guaranteed to be >= -1. We call + select(maxfd + 1, ...); specially in case of (maxfd == -1) we call + select(0, ...), which is basically equal to sleeping the timeout. On + Windows we can't sleep via select without a dummy socket and instead + we Sleep() for 100ms which is the minimum suggested value in the + curl_multi_fdset() doc. */ + +#ifdef _WIN32 + if(maxfd == -1) { + Sleep(100); + rc = 0; + } + else +#endif + { + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + } switch(rc) { case -1: diff --git a/docs/examples/multi-single.c b/docs/examples/multi-single.c index 37a01cd8332df489a81a93111335faffad478749..3d80c655fc788b3ba7a720985b7dbe9cdad8d450 100644 --- a/docs/examples/multi-single.c +++ b/docs/examples/multi-single.c @@ -60,6 +60,7 @@ int main(void) do { struct timeval timeout; int rc; /* select() return code */ + CURLMcode mc; /* curl_multi_fdset() return code */ fd_set fdread; fd_set fdwrite; @@ -86,15 +87,31 @@ int main(void) } /* get file descriptors from the transfers */ - curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); + mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially in - case of (maxfd == -1), we call select(0, ...), which is basically equal - to sleep. */ + if(mc != CURLM_OK) + { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); + break; + } - rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + /* On success the value of maxfd is guaranteed to be >= -1. We call + select(maxfd + 1, ...); specially in case of (maxfd == -1) we call + select(0, ...), which is basically equal to sleeping the timeout. On + Windows we can't sleep via select without a dummy socket and instead + we Sleep() for 100ms which is the minimum suggested value in the + curl_multi_fdset() doc. */ + +#ifdef _WIN32 + if(maxfd == -1) { + Sleep(100); + rc = 0; + } + else +#endif + { + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + } switch(rc) { case -1: diff --git a/docs/examples/pop3-multi.c b/docs/examples/pop3-multi.c index d14d1159b2d85466da4f59deb89cafae9ae733c4..42142f95410c999968dcafd478b29b48be32b75a 100644 --- a/docs/examples/pop3-multi.c +++ b/docs/examples/pop3-multi.c @@ -88,6 +88,7 @@ int main(void) fd_set fdexcep; int maxfd = -1; int rc; + CURLMcode mc; /* curl_multi_fdset() return code */ long curl_timeo = -1; @@ -109,15 +110,32 @@ int main(void) timeout.tv_usec = (curl_timeo % 1000) * 1000; } - /* Get file descriptors from the transfers */ - curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd); + /* get file descriptors from the transfers */ + mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd); - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially in - case of (maxfd == -1), we call select(0, ...), which is basically equal - to sleep. */ - rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout); + if(mc != CURLM_OK) + { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); + break; + } + + /* On success the value of maxfd is guaranteed to be >= -1. We call + select(maxfd + 1, ...); specially in case of (maxfd == -1) we call + select(0, ...), which is basically equal to sleeping the timeout. On + Windows we can't sleep via select without a dummy socket and instead + we Sleep() for 100ms which is the minimum suggested value in the + curl_multi_fdset() doc. */ + +#ifdef _WIN32 + if(maxfd == -1) { + Sleep(100); + rc = 0; + } + else +#endif + { + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + } if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) { fprintf(stderr, diff --git a/docs/examples/smtp-multi.c b/docs/examples/smtp-multi.c index 7f3d333dfe091dadcadb4a51f37e8c02400077e2..998f69e3f51ad83c429725ad03025864eb2bc4b4 100644 --- a/docs/examples/smtp-multi.c +++ b/docs/examples/smtp-multi.c @@ -155,6 +155,7 @@ int main(void) fd_set fdexcep; int maxfd = -1; int rc; + CURLMcode mc; /* curl_multi_fdset() return code */ long curl_timeo = -1; @@ -176,15 +177,32 @@ int main(void) timeout.tv_usec = (curl_timeo % 1000) * 1000; } - /* Get file descriptors from the transfers */ - curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd); + /* get file descriptors from the transfers */ + mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd); - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially in - case of (maxfd == -1), we call select(0, ...), which is basically equal - to sleep. */ - rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + if(mc != CURLM_OK) + { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); + break; + } + + /* On success the value of maxfd is guaranteed to be >= -1. We call + select(maxfd + 1, ...); specially in case of (maxfd == -1) we call + select(0, ...), which is basically equal to sleeping the timeout. On + Windows we can't sleep via select without a dummy socket and instead + we Sleep() for 100ms which is the minimum suggested value in the + curl_multi_fdset() doc. */ + +#ifdef _WIN32 + if(maxfd == -1) { + Sleep(100); + rc = 0; + } + else +#endif + { + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + } if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) { fprintf(stderr,