X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_client_curl.c;h=641a9d8d44d1b3de2975eb8ee8dd78dc798ee838;hp=cca6a27cd869422bed12e8c9a81058650b94153c;hb=2e92ec70991d53cb3d6d710ae7a6b3a6b31ec978;hpb=40d6f0ca483e19b18982d135e5ea2c7426e832a6 diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c index cca6a27..641a9d8 100644 --- a/src/php_http_client_curl.c +++ b/src/php_http_client_curl.c @@ -15,7 +15,7 @@ #include "php_http_client_curl_event.h" #include "php_http_client_curl_user.h" -#if PHP_HTTP_HAVE_CURL +#if PHP_HTTP_HAVE_LIBCURL #ifdef PHP_HTTP_HAVE_OPENSSL # include @@ -923,20 +923,23 @@ static ZEND_RESULT_CODE php_http_curle_option_set_range(php_http_option_t *opt, if (val && Z_TYPE_P(val) != IS_NULL) { zval *rr, *rb, *re; - zend_long rbl, rel; HashTable *ht = HASH_OF(val); ZEND_HASH_FOREACH_VAL(ht, rr) { if (Z_TYPE_P(rr) == IS_ARRAY) { if (2 == php_http_array_list(Z_ARRVAL_P(rr), 2, &rb, &re)) { - if ( ((Z_TYPE_P(rb) == IS_LONG) || ((Z_TYPE_P(rb) == IS_STRING) && is_numeric_string(Z_STRVAL_P(rb), Z_STRLEN_P(rb), &rbl, NULL, 1))) && - ((Z_TYPE_P(re) == IS_LONG) || ((Z_TYPE_P(re) == IS_STRING) && is_numeric_string(Z_STRVAL_P(re), Z_STRLEN_P(re), &rel, NULL, 1)))) { - if ((rbl >= 0) && (rel >= 0)) { + zend_long rbl = zval_get_long(rb), rel = zval_get_long(re); + + if (rbl >= 0) { + if (rel > 0) { php_http_buffer_appendf(&curl->options.ranges, "%ld-%ld,", rbl, rel); + } else { + php_http_buffer_appendf(&curl->options.ranges, "%ld-", rbl); } + } else if (rel > 0) { + php_http_buffer_appendf(&curl->options.ranges, "-%ld", rel); } - } } } @@ -1635,7 +1638,7 @@ static ZEND_RESULT_CODE php_http_curlm_option_set_use_eventloop(php_http_option_ if (value && Z_TYPE_P(value) == IS_OBJECT && instanceof_function(Z_OBJCE_P(value), php_http_client_curl_user_get_class_entry())) { ev_ops = php_http_client_curl_user_ops_get(); -#if PHP_HTTP_HAVE_EVENT +#if PHP_HTTP_HAVE_LIBEVENT } else if (value && zend_is_true(value)) { ev_ops = php_http_client_curl_event_ops_get(); #endif @@ -1751,15 +1754,13 @@ static ZEND_RESULT_CODE php_http_curlm_set_option(php_http_option_t *opt, zval * php_http_client_t *client = userdata; php_http_client_curl_t *curl = client->ctx; CURLM *ch = curl->handle->multi; - zval *orig = val; + zval zopt, *orig = val; CURLMcode rc = CURLM_UNKNOWN_OPTION; ZEND_RESULT_CODE rv = SUCCESS; if (!val) { val = &opt->defval; } else if (opt->type && Z_TYPE_P(val) != opt->type && !(Z_TYPE_P(val) == IS_NULL && opt->type == IS_ARRAY)) { - zval zopt; - ZVAL_DUP(&zopt, val); convert_to_explicit_type(&zopt, opt->type); @@ -2320,7 +2321,7 @@ static ZEND_RESULT_CODE php_http_client_curl_setopt(php_http_client_t *h, php_ht break; case PHP_HTTP_CLIENT_OPT_USE_EVENTS: -#if PHP_HTTP_HAVE_EVENT +#if PHP_HTTP_HAVE_LIBEVENT return php_http_curlm_use_eventloop(h, (*(zend_bool *) arg) ? php_http_client_curl_event_ops_get() : NULL, NULL); @@ -2604,7 +2605,7 @@ PHP_MSHUTDOWN_FUNCTION(http_client_curl) return SUCCESS; } -#endif /* PHP_HTTP_HAVE_CURL */ +#endif /* PHP_HTTP_HAVE_LIBCURL */ /* * Local variables: