X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_client_curl.c;h=9881301c3dce2c62b75fe04358d69adcd71ee9ca;hb=feab775de457917972ab8d2e47e12bded7f68872;hp=6753e57cf8eb337db1d49739c162fa89fa69c920;hpb=6139024663154e9d02f5418621f7ee7f20e00c0d;p=m6w6%2Fext-http diff --git a/php_http_client_curl.c b/php_http_client_curl.c index 6753e57..9881301 100644 --- a/php_http_client_curl.c +++ b/php_http_client_curl.c @@ -843,7 +843,7 @@ static ZEND_RESULT_CODE php_http_curle_option_set_cookiestore(php_http_option_t if (storage->cookiestore) { pefree(storage->cookiestore, 1); } - if (val && Z_STRLEN_P(val)) { + if (val && Z_TYPE_P(val) == IS_STRING && Z_STRLEN_P(val)) { storage->cookiestore = pestrndup(Z_STRVAL_P(val), Z_STRLEN_P(val), 1); } else { storage->cookiestore = NULL; @@ -956,7 +956,7 @@ static ZEND_RESULT_CODE php_http_curle_option_set_etag(php_http_option_t *opt, z php_http_client_curl_handler_t *curl = userdata; php_http_buffer_t header; - if (Z_STRLEN_P(val)) { + if (val && Z_TYPE_P(val) == IS_STRING && Z_STRLEN_P(val)) { zend_bool is_quoted = !((Z_STRVAL_P(val)[0] != '"') || (Z_STRVAL_P(val)[Z_STRLEN_P(val)-1] != '"')); php_http_buffer_init(&header); php_http_buffer_appendf(&header, is_quoted?"%s: %s":"%s: \"%s\"", curl->options.range_request?"If-Match":"If-None-Match", Z_STRVAL_P(val)); @@ -1346,7 +1346,7 @@ static void php_http_curle_options_init(php_http_options_t *registry) opt->flags |= PHP_HTTP_CURLE_OPTION_CHECK_STRLEN; opt->flags |= PHP_HTTP_CURLE_OPTION_CHECK_BASEDIR; #ifdef PHP_HTTP_CURL_CAINFO - ZVAL_STRING(&opt->defval, PHP_HTTP_CURL_CAINFO); + ZVAL_PSTRING(&opt->defval, PHP_HTTP_CURL_CAINFO); #endif } if ((opt = php_http_option_register(registry, ZEND_STRL("capath"), CURLOPT_CAPATH, IS_STRING))) { @@ -1431,6 +1431,10 @@ static ZEND_RESULT_CODE php_http_curle_set_option(php_http_option_t *opt, zval * case IS_STRING: if (opt->setter) { rv = opt->setter(opt, val, curl); + } else if (!val || Z_TYPE_P(val) == IS_NULL) { + if (CURLE_OK != (rc = curl_easy_setopt(ch, opt->option, NULL))) { + rv = FAILURE; + } } else if ((opt->flags & PHP_HTTP_CURLE_OPTION_CHECK_STRLEN) && !Z_STRLEN_P(val)) { if (CURLE_OK != (rc = curl_easy_setopt(ch, opt->option, NULL))) { rv = FAILURE;