release 2.6.0
[m6w6/ext-http] / src / php_http_client_curl.c
index 27ebd02682790897a238e4051efe7120cdd58a5b..b7c6b05389012f74bc667b2d2a38f23feee855b9 100644 (file)
@@ -450,6 +450,11 @@ static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info)
                add_assoc_long_ex(&array, "local_port", sizeof("local_port"), l);
        }
 #endif
+#if PHP_HTTP_CURL_VERSION(7,50,0)
+       if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_HTTP_VERSION, &l)) {
+               add_assoc_long_ex(&array, "http_version", sizeof("http_version"), l);
+       }
+#endif
 
        /* END::CURLINFO */
 
@@ -2251,19 +2256,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;
+                       }
                }
        }