X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_client_curl.c;h=f07bb8f4abbcefa148b39b7a2d2a2b5ef718192f;hp=1626b712e41496c6d98561c7ec794f067c830016;hb=ab5b4e3acd2b0379e5d8bc95a8d4f83ce5c91fb7;hpb=f486a14465656df4544ca84a3e0e2730132cce93 diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c index 1626b71..f07bb8f 100644 --- a/src/php_http_client_curl.c +++ b/src/php_http_client_curl.c @@ -21,7 +21,7 @@ # include #endif #if PHP_HTTP_HAVE_LIBCURL_GNUTLS -# include +# include #endif typedef struct php_http_client_curl_handler { @@ -2206,7 +2206,7 @@ static ZEND_RESULT_CODE php_http_client_curl_dequeue(php_http_client_t *h, php_h php_http_client_curl_t *curl = h->ctx; php_http_client_curl_handler_t *handler = enqueue->opaque; - if (h->callback.depth) { + if (h->callback.depth && !CG(unclean_shutdown)) { php_error_docref(NULL, E_WARNING, "Could not dequeue request while executing callbacks"); return FAILURE; } @@ -2429,6 +2429,14 @@ php_http_client_ops_t *php_http_client_curl_get_ops(void) return &php_http_client_curl_ops; } +#define REGISTER_NS_STRING_OR_NULL_CONSTANT(ns, name, str, flags) \ + do { \ + if ((str) != NULL) { \ + REGISTER_NS_STRING_CONSTANT(ns, name, str, flags); \ + } else { \ + REGISTER_NS_NULL_CONSTANT(ns, name, flags); \ + } \ + } while (0) PHP_MINIT_FUNCTION(http_client_curl) { @@ -2509,12 +2517,12 @@ PHP_MINIT_FUNCTION(http_client_curl) REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl", "VERSIONS", curl_version(), CONST_CS|CONST_PERSISTENT); #if CURLVERSION_NOW >= 0 REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "CURL", (char *) info->version, CONST_CS|CONST_PERSISTENT); - REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "SSL", (char *) info->ssl_version, CONST_CS|CONST_PERSISTENT); - REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "LIBZ", (char *) info->libz_version, CONST_CS|CONST_PERSISTENT); + REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "SSL", (char *) info->ssl_version, CONST_CS|CONST_PERSISTENT); + REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "LIBZ", (char *) info->libz_version, CONST_CS|CONST_PERSISTENT); # if CURLVERSION_NOW >= 1 - REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "ARES", (char *) info->ares, CONST_CS|CONST_PERSISTENT); + REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "ARES", (char *) info->ares, CONST_CS|CONST_PERSISTENT); # if CURLVERSION_NOW >= 2 - REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "IDN", (char *) info->libidn, CONST_CS|CONST_PERSISTENT); + REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "IDN", (char *) info->libidn, CONST_CS|CONST_PERSISTENT); # endif # endif #endif