X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_request_pool_api.c;h=0faf2756c13f5fae199891bfd1eb94e73c9d60f6;hb=f0d2eafadc9967abd53546c6b7f395ce095255e9;hp=34bc1cb2d8f381d56eb9ebfc4980c7fbdc2b5beb;hpb=e83a7438dc70ed96630887246a1d3aefcf155b1c;p=m6w6%2Fext-http diff --git a/http_request_pool_api.c b/http_request_pool_api.c index 34bc1cb..0faf275 100644 --- a/http_request_pool_api.c +++ b/http_request_pool_api.c @@ -239,6 +239,12 @@ PHP_HTTP_API void _http_request_pool_dtor(http_request_pool *pool TSRMLS_DC) } /* }}} */ +#ifdef PHP_WIN32 +# define SELECT_ERROR SOCKET_ERROR +#else +# define SELECT_ERROR -1 +#endif + /* {{{ STATUS http_request_pool_select(http_request_pool *) */ PHP_HTTP_API STATUS _http_request_pool_select(http_request_pool *pool) { @@ -250,8 +256,12 @@ PHP_HTTP_API STATUS _http_request_pool_select(http_request_pool *pool) FD_ZERO(&W); FD_ZERO(&E); - curl_multi_fdset(pool->ch, &R, &W, &E, &MAX); - return (-1 != select(MAX + 1, &R, &W, &E, &timeout)) ? SUCCESS : FAILURE; + if (CURLM_OK == curl_multi_fdset(pool->ch, &R, &W, &E, &MAX)) { + if (MAX == -1 || SELECT_ERROR != select(MAX + 1, &R, &W, &E, &timeout)) { + return SUCCESS; + } + } + return FAILURE; } /* }}} */ @@ -265,11 +275,9 @@ PHP_HTTP_API int _http_request_pool_perform(http_request_pool *pool TSRMLS_DC) while (msg = curl_multi_info_read(pool->ch, &remaining)) { if (CURLMSG_DONE == msg->msg) { - -#if HTTP_DEBUG_REQPOOLS - fprintf(stderr, "Done CURL handle: %p (remaining: %d)\n", msg->easy_handle, remaining); -#endif - + if (CURLE_OK != msg->data.result) { + http_error(HE_WARNING, HTTP_E_REQUEST, curl_easy_strerror(msg->data.result)); + } zend_llist_apply_with_argument(&pool->handles, (llist_apply_with_arg_func_t) http_request_pool_responsehandler, msg->easy_handle TSRMLS_CC); } }