From: Michael Wallner Date: Tue, 23 Aug 2016 11:37:53 +0000 (+0200) Subject: avoid recursive calls to the event loop dispatcher X-Git-Tag: RELEASE_2_6_0_BETA2~2 X-Git-Url: https://git.m6w6.name/?a=commitdiff_plain;h=92d8f06029623d719357ad7d08d42909996768f9;p=m6w6%2Fext-http avoid recursive calls to the event loop dispatcher --- diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c index 27ebd02..b15fdd4 100644 --- a/src/php_http_client_curl.c +++ b/src/php_http_client_curl.c @@ -2251,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; + } } }