X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fphp_http_client_curl.c;h=b15fdd47f6c84475be23ff4026816eaf9503af5b;hb=3c7b514d38d844b855d430fcbaed6dea67c9c17b;hp=1ec6624cc21a07b7e3d6957b398621b393ff989d;hpb=0fa2672890a4fe58c3418670e57a511b3ea7189c;p=m6w6%2Fext-http diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c index 1ec6624..b15fdd4 100644 --- a/src/php_http_client_curl.c +++ b/src/php_http_client_curl.c @@ -2233,16 +2233,17 @@ static int php_http_client_curl_once(php_http_client_t *h) { php_http_client_curl_t *curl = h->ctx; - if (curl->ev_ops) { - curl->ev_ops->once(curl->ev_ctx); - } else { - while (CURLM_CALL_MULTI_PERFORM == curl_multi_perform(curl->handle->multi, &curl->unfinished)); - } + if (!h->callback.depth) { + if (curl->ev_ops) { + curl->ev_ops->once(curl->ev_ctx); + } else { + while (CURLM_CALL_MULTI_PERFORM == curl_multi_perform(curl->handle->multi, &curl->unfinished)); + } - php_http_client_curl_responsehandler(h); + php_http_client_curl_responsehandler(h); + } return curl->unfinished; - } static ZEND_RESULT_CODE php_http_client_curl_exec(php_http_client_t *h) @@ -2250,19 +2251,21 @@ static ZEND_RESULT_CODE php_http_client_curl_exec(php_http_client_t *h) php_http_client_curl_t *curl = h->ctx; TSRMLS_FETCH_FROM_CTX(h->ts); - if (curl->ev_ops) { - return curl->ev_ops->exec(curl->ev_ctx); - } + if (!h->callback.depth) { + if (curl->ev_ops) { + return curl->ev_ops->exec(curl->ev_ctx); + } - while (php_http_client_curl_once(h) && !EG(exception)) { - if (SUCCESS != php_http_client_curl_wait(h, NULL)) { + while (php_http_client_curl_once(h) && !EG(exception)) { + if (SUCCESS != php_http_client_curl_wait(h, NULL)) { #ifdef PHP_WIN32 - /* see http://msdn.microsoft.com/library/en-us/winsock/winsock/windows_sockets_error_codes_2.asp */ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "WinSock error: %d", WSAGetLastError()); + /* see http://msdn.microsoft.com/library/en-us/winsock/winsock/windows_sockets_error_codes_2.asp */ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "WinSock error: %d", WSAGetLastError()); #else php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", strerror(errno)); #endif - return FAILURE; + return FAILURE; + } } }