flush
[m6w6/ext-http] / src / php_http_client_curl.c
index cca6a27cd869422bed12e8c9a81058650b94153c..641a9d8d44d1b3de2975eb8ee8dd78dc798ee838 100644 (file)
@@ -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 <openssl/ssl.h>
@@ -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: