X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_client_curl.c;h=18eb944708b7d74b562966a9f4fed1b0e6552aac;hp=317edd3baf00851f80fc40c721ad09e3358200f2;hb=f6a612bfd0eb7ff179c013f3226b6a7790bb4d82;hpb=ab1eba311be2f8aab98eed7a6164e79d69b402b2 diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c index 317edd3..18eb944 100644 --- a/src/php_http_client_curl.c +++ b/src/php_http_client_curl.c @@ -198,14 +198,10 @@ static php_resource_factory_ops_t php_http_curlm_resource_factory_ops = { static size_t php_http_curle_read_callback(void *data, size_t len, size_t n, void *ctx) { - php_http_message_body_t *body = ctx; + php_stream *s = php_http_message_body_stream(ctx); - if (body && body->res) { - php_stream *s = php_http_message_body_stream(body); - - if (s) { - return php_stream_read(s, data, len * n); - } else abort(); + if (s) { + return php_stream_read(s, data, len * n); } return 0; } @@ -1795,9 +1791,15 @@ static ZEND_RESULT_CODE php_http_curlm_option_set_share_cookies(php_http_option_ } else { rc = curl_share_setopt(curl->handle->share, CURLSHOPT_UNSHARE, CURL_LOCK_DATA_COOKIE); } - return CURLSHE_OK == rc ? SUCCESS : FAILURE; + + if (CURLSHE_OK != rc) { + php_error_docref(NULL, E_NOTICE, "Could not set option %s (%s)", opt->name->val, curl_share_strerror(rc)); + return FAILURE; + } + return SUCCESS; } +#if PHP_HTTP_CURL_VERSION(7,23,0) static ZEND_RESULT_CODE php_http_curlm_option_set_share_ssl(php_http_option_t *opt, zval *value, void *userdata) { php_http_client_t *client = userdata; @@ -1809,8 +1811,14 @@ static ZEND_RESULT_CODE php_http_curlm_option_set_share_ssl(php_http_option_t *o } else { rc = curl_share_setopt(curl->handle->share, CURLSHOPT_UNSHARE, CURL_LOCK_DATA_SSL_SESSION); } - return CURLSHE_OK == rc ? SUCCESS : FAILURE; + + if (CURLSHE_OK != rc) { + php_error_docref(NULL, E_NOTICE, "Could not set option %s (%s)", opt->name->val, curl_share_strerror(rc)); + return FAILURE; + } + return SUCCESS; } +#endif static void php_http_curlm_options_init(php_http_options_t *registry) { @@ -1868,10 +1876,12 @@ static void php_http_curlm_options_init(php_http_options_t *registry) opt->setter = php_http_curlm_option_set_share_cookies; ZVAL_TRUE(&opt->defval); } +#if PHP_HTTP_CURL_VERSION(7,23,0) if ((opt = php_http_option_register(registry, ZEND_STRL("share_ssl"), 0, _IS_BOOL))) { opt->setter = php_http_curlm_option_set_share_ssl; ZVAL_TRUE(&opt->defval); } +#endif } static ZEND_RESULT_CODE php_http_curlm_set_option(php_http_option_t *opt, zval *val, void *userdata) @@ -1901,15 +1911,18 @@ static ZEND_RESULT_CODE php_http_curlm_set_option(php_http_option_t *opt, zval * case _IS_BOOL: if (CURLM_OK != (rc = curl_multi_setopt(ch, opt->option, (long) zend_is_true(val)))) { rv = FAILURE; + php_error_docref(NULL, E_NOTICE, "Could not set option %s (%s)", opt->name->val, curl_multi_strerror(rc)); } break; case IS_LONG: if (CURLM_OK != (rc = curl_multi_setopt(ch, opt->option, Z_LVAL_P(val)))) { rv = FAILURE; + php_error_docref(NULL, E_NOTICE, "Could not set option %s (%s)", opt->name->val, curl_multi_strerror(rc)); } break; default: rv = FAILURE; + php_error_docref(NULL, E_NOTICE, "Could not set option %s", opt->name->val); break; } } @@ -1918,9 +1931,6 @@ static ZEND_RESULT_CODE php_http_curlm_set_option(php_http_option_t *opt, zval * zval_ptr_dtor(val); } - if (rv != SUCCESS) { - php_error_docref(NULL, E_NOTICE, "Could not set option %s (%s)", opt->name->val, curl_easy_strerror(rc)); - } return rv; }