diff options
Diffstat (limited to 'ext/curl')
| -rw-r--r-- | ext/curl/curl.stub.php | 147 | ||||
| -rw-r--r-- | ext/curl/curl_arginfo.h | 132 | ||||
| -rw-r--r-- | ext/curl/curl_file.c | 27 | ||||
| -rw-r--r-- | ext/curl/curl_file.stub.php | 24 | ||||
| -rw-r--r-- | ext/curl/curl_file_arginfo.h | 22 | ||||
| -rw-r--r-- | ext/curl/interface.c | 177 | ||||
| -rw-r--r-- | ext/curl/multi.c | 26 | ||||
| -rw-r--r-- | ext/curl/php_curl.h | 2 | ||||
| -rw-r--r-- | ext/curl/share.c | 8 | ||||
| -rw-r--r-- | ext/curl/tests/curl_multi_close_basic001.phpt | 12 | ||||
| -rw-r--r-- | ext/curl/tests/curl_setopt_error.phpt | 32 | 
11 files changed, 375 insertions, 234 deletions
diff --git a/ext/curl/curl.stub.php b/ext/curl/curl.stub.php new file mode 100644 index 0000000000..f5bd6daacf --- /dev/null +++ b/ext/curl/curl.stub.php @@ -0,0 +1,147 @@ +<?php + +/** @param resource $handle */ +function curl_close($handle): void {} + +/** + * @param resource $handle + * + * @return resource|false + */ +function curl_copy_handle($handle) {} + +/** @param resource $handle */ +function curl_errno($handle): int {} + +/** @param resource $handle */ +function curl_error($handle): string {} + +/** + * @param resource $handle + * + * @return string|false + */ +function curl_escape($handle, string $string) {} + +/** + * @param resource $handle + * + * @return string|bool + */ +function curl_exec($handle) {} + +function curl_file_create( +    string $filename, +    string $mimetype = UNKNOWN, +    string $postname = UNKNOWN +): CURLFile {} + +/** + * @param resource $handle + * + * @return mixed + */ +function curl_getinfo($handle, int $option = UNKNOWN) {} + +/** + * @param resource $handle + * + * @return resource|false + */ +function curl_init(string $url = UNKNOWN) {} + +/** + * @param resource $multi_handle + * @param resource $handle + */ +function curl_multi_add_handle($multi_handle, $handle): int {} + +/** @param resource $multi_handle */ +function curl_multi_close($multi_handle): void {} + +/** + * @param resource $multi_handle + * + * @return int|false + */ +function curl_multi_errno($multi_handle): int {} + +/** @param resource $multi_handle */ +function curl_multi_exec($multi_handle, &$still_running): int {} + +/** @param resource $multi_handle */ +function curl_multi_getcontent($multi_handle): ?string {} + +/** + * @param resource $multi_handle + * + * @return array|false + */ +function curl_multi_info_read($multi_handle, &$msgs_in_queue = null) {} + +/** @return resource */ +function curl_multi_init() {} + +/** + * @param resource $multi_handle + * @param resource $handle + */ +function curl_multi_remove_handle($multi_handle, $handle): int {} + +/** @param resource $multi_handle */ +function curl_multi_select($multi_handle, float $timeout = 1.0): int {} + +/** + * @param resource $multi_handle + * @param mixed $value + */ +function curl_multi_setopt($multi_handle, int $option, $value): bool {} + +function curl_multi_strerror(int $error_number): ?string {} + +#if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */ +/** @param resource $handle */ +function curl_pause($handle, int $bitmask): int {} +#endif + +/** @param resource $handle */ +function curl_reset($handle): void {} + +/** + * @param resource $handle + * @param array<int, mixed> $options + */ +function curl_setopt_array($handle, array $options): bool {} + + +/** + * @param resource $handle + * @param mixed $value + */ +function curl_setopt($handle, int $option, $value): bool {} + +/** @param resource $share_handle */ +function curl_share_close($share_handle): void {} + +/** @param resource $share_handle */ +function curl_share_errno($share_handle): int {} + +/** @return resource */ +function curl_share_init() {} + +/** @param resource $share_handle */ +function curl_share_setopt($share_handle, int $option, $value): bool {} + +function curl_share_strerror(int $error_number): ?string {} + +function curl_strerror(int $error_number): ?string {} + +/** + * @param resource $handle + * + * @return string|false + */ +function curl_unescape($handle, string $string) {} + +/** @return array|false */ +function curl_version(int $age = UNKNOWN) {} diff --git a/ext/curl/curl_arginfo.h b/ext/curl/curl_arginfo.h new file mode 100644 index 0000000000..561c0a7684 --- /dev/null +++ b/ext/curl/curl_arginfo.h @@ -0,0 +1,132 @@ +/* This is a generated file, edit the .stub.php file instead. */ + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_close, 0, 1, IS_VOID, 0) +	ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_copy_handle, 0, 0, 1) +	ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_errno, 0, 1, IS_LONG, 0) +	ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_error, 0, 1, IS_STRING, 0) +	ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_escape, 0, 0, 2) +	ZEND_ARG_INFO(0, handle) +	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_curl_exec arginfo_curl_copy_handle + +ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_curl_file_create, 0, 1, CURLFile, 0) +	ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) +	ZEND_ARG_TYPE_INFO(0, mimetype, IS_STRING, 0) +	ZEND_ARG_TYPE_INFO(0, postname, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_getinfo, 0, 0, 1) +	ZEND_ARG_INFO(0, handle) +	ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_init, 0, 0, 0) +	ZEND_ARG_TYPE_INFO(0, url, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_add_handle, 0, 2, IS_LONG, 0) +	ZEND_ARG_INFO(0, multi_handle) +	ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_close, 0, 1, IS_VOID, 0) +	ZEND_ARG_INFO(0, multi_handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_errno, 0, 1, IS_LONG, 0) +	ZEND_ARG_INFO(0, multi_handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_exec, 0, 2, IS_LONG, 0) +	ZEND_ARG_INFO(0, multi_handle) +	ZEND_ARG_INFO(1, still_running) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_getcontent, 0, 1, IS_STRING, 1) +	ZEND_ARG_INFO(0, multi_handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_multi_info_read, 0, 0, 1) +	ZEND_ARG_INFO(0, multi_handle) +	ZEND_ARG_INFO(1, msgs_in_queue) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_multi_init, 0, 0, 0) +ZEND_END_ARG_INFO() + +#define arginfo_curl_multi_remove_handle arginfo_curl_multi_add_handle + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_select, 0, 1, IS_LONG, 0) +	ZEND_ARG_INFO(0, multi_handle) +	ZEND_ARG_TYPE_INFO(0, timeout, IS_DOUBLE, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_setopt, 0, 3, _IS_BOOL, 0) +	ZEND_ARG_INFO(0, multi_handle) +	ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0) +	ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_strerror, 0, 1, IS_STRING, 1) +	ZEND_ARG_TYPE_INFO(0, error_number, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */ +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_pause, 0, 2, IS_LONG, 0) +	ZEND_ARG_INFO(0, handle) +	ZEND_ARG_TYPE_INFO(0, bitmask, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +#define arginfo_curl_reset arginfo_curl_close + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_setopt_array, 0, 2, _IS_BOOL, 0) +	ZEND_ARG_INFO(0, handle) +	ZEND_ARG_TYPE_INFO(0, options, IS_ARRAY, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_setopt, 0, 3, _IS_BOOL, 0) +	ZEND_ARG_INFO(0, handle) +	ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0) +	ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_share_close, 0, 1, IS_VOID, 0) +	ZEND_ARG_INFO(0, share_handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_share_errno, 0, 1, IS_LONG, 0) +	ZEND_ARG_INFO(0, share_handle) +ZEND_END_ARG_INFO() + +#define arginfo_curl_share_init arginfo_curl_multi_init + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_share_setopt, 0, 3, _IS_BOOL, 0) +	ZEND_ARG_INFO(0, share_handle) +	ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0) +	ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() + +#define arginfo_curl_share_strerror arginfo_curl_multi_strerror + +#define arginfo_curl_strerror arginfo_curl_multi_strerror + +#define arginfo_curl_unescape arginfo_curl_escape + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_version, 0, 0, 0) +	ZEND_ARG_TYPE_INFO(0, age, IS_LONG, 0) +ZEND_END_ARG_INFO() diff --git a/ext/curl/curl_file.c b/ext/curl/curl_file.c index a35e29147c..3241a8e31b 100644 --- a/ext/curl/curl_file.c +++ b/ext/curl/curl_file.c @@ -1,7 +1,5 @@  /*     +----------------------------------------------------------------------+ -   | PHP Version 7                                                        | -   +----------------------------------------------------------------------+     | Copyright (c) The PHP Group                                          |     +----------------------------------------------------------------------+     | This source file is subject to version 3.01 of the PHP license,      | @@ -24,6 +22,8 @@  #include "Zend/zend_exceptions.h"  #include "Zend/zend_interfaces.h"  #include "php_curl.h" +#include "curl_arginfo.h" +#include "curl_file_arginfo.h"  #if HAVE_CURL  PHP_CURL_API zend_class_entry *curl_CURLFile_class; @@ -131,24 +131,13 @@ ZEND_METHOD(CURLFile, setPostFilename)  }  /* }}} */ -ZEND_BEGIN_ARG_INFO_EX(arginfo_curlfile_create, 0, 0, 1) -	ZEND_ARG_INFO(0, filename) -	ZEND_ARG_INFO(0, mimetype) -	ZEND_ARG_INFO(0, postname) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curlfile_name, 0) -	ZEND_ARG_INFO(0, name) -ZEND_END_ARG_INFO() - -  static const zend_function_entry curlfile_funcs[] = { -	PHP_ME(CURLFile,			__construct,        arginfo_curlfile_create, ZEND_ACC_PUBLIC) -	PHP_ME(CURLFile,			getFilename,        NULL, ZEND_ACC_PUBLIC) -	PHP_ME(CURLFile,			getMimeType,        NULL, ZEND_ACC_PUBLIC) -	PHP_ME(CURLFile,			setMimeType,        arginfo_curlfile_name, ZEND_ACC_PUBLIC) -	PHP_ME(CURLFile,			getPostFilename,    NULL, ZEND_ACC_PUBLIC) -	PHP_ME(CURLFile,			setPostFilename,    arginfo_curlfile_name, ZEND_ACC_PUBLIC) +	PHP_ME(CURLFile,			__construct,        arginfo_class_CURLFile___construct, ZEND_ACC_PUBLIC) +	PHP_ME(CURLFile,			getFilename,        arginfo_class_CURLFile_getFilename, ZEND_ACC_PUBLIC) +	PHP_ME(CURLFile,			getMimeType,        arginfo_class_CURLFile_getMimeType, ZEND_ACC_PUBLIC) +	PHP_ME(CURLFile,			setMimeType,        arginfo_class_CURLFile_setMimeType, ZEND_ACC_PUBLIC) +	PHP_ME(CURLFile,			getPostFilename,    arginfo_class_CURLFile_getPostFilename, ZEND_ACC_PUBLIC) +	PHP_ME(CURLFile,			setPostFilename,    arginfo_class_CURLFile_setPostFilename, ZEND_ACC_PUBLIC)  	PHP_FE_END  }; diff --git a/ext/curl/curl_file.stub.php b/ext/curl/curl_file.stub.php new file mode 100644 index 0000000000..e6e21f9a02 --- /dev/null +++ b/ext/curl/curl_file.stub.php @@ -0,0 +1,24 @@ +<?php + +class CURLFile { +    public function __construct( +        string $filename, +        string $mimetype = UNKNOWN, +        string $postname = UNKNOWN +    ) {} + +    /** @return string */ +    public function getFilename() {} + +    /** @return string */ +    public function getMimeType() {} + +    /** @return string */ +    public function getPostFilename() {} + +    /** @return void */ +    public function setMimeType(string $mime) {} + +    /** @return void */ +    public function setPostFilename(string $postname) {} +} diff --git a/ext/curl/curl_file_arginfo.h b/ext/curl/curl_file_arginfo.h new file mode 100644 index 0000000000..df50ab29dd --- /dev/null +++ b/ext/curl/curl_file_arginfo.h @@ -0,0 +1,22 @@ +/* This is a generated file, edit the .stub.php file instead. */ + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CURLFile___construct, 0, 0, 1) +	ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) +	ZEND_ARG_TYPE_INFO(0, mimetype, IS_STRING, 0) +	ZEND_ARG_TYPE_INFO(0, postname, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CURLFile_getFilename, 0, 0, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_CURLFile_getMimeType arginfo_class_CURLFile_getFilename + +#define arginfo_class_CURLFile_getPostFilename arginfo_class_CURLFile_getFilename + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CURLFile_setMimeType, 0, 0, 1) +	ZEND_ARG_TYPE_INFO(0, mime, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CURLFile_setPostFilename, 0, 0, 1) +	ZEND_ARG_TYPE_INFO(0, postname, IS_STRING, 0) +ZEND_END_ARG_INFO() diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 6a25359597..abb4a8a688 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1,7 +1,5 @@  /*     +----------------------------------------------------------------------+ -   | PHP Version 7                                                        | -   +----------------------------------------------------------------------+     | Copyright (c) The PHP Group                                          |     +----------------------------------------------------------------------+     | This source file is subject to version 3.01 of the PHP license,      | @@ -68,6 +66,7 @@  #include "ext/standard/file.h"  #include "ext/standard/url.h"  #include "php_curl.h" +#include "curl_arginfo.h"  int  le_curl;  int  le_curl_multi_handle; @@ -241,154 +240,6 @@ void _php_curl_verify_handlers(php_curl *ch, int reporterror) /* {{{ */  }  /* }}} */ -/* {{{ arginfo */ -ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_version, 0, 0, 0) -	ZEND_ARG_INFO(0, version) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_init, 0, 0, 0) -	ZEND_ARG_INFO(0, url) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_copy_handle, 0) -	ZEND_ARG_INFO(0, ch) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_setopt, 0) -	ZEND_ARG_INFO(0, ch) -	ZEND_ARG_INFO(0, option) -	ZEND_ARG_INFO(0, value) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_setopt_array, 0) -	ZEND_ARG_INFO(0, ch) -	ZEND_ARG_ARRAY_INFO(0, options, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_exec, 0) -	ZEND_ARG_INFO(0, ch) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_getinfo, 0, 0, 1) -	ZEND_ARG_INFO(0, ch) -	ZEND_ARG_INFO(0, option) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_error, 0) -	ZEND_ARG_INFO(0, ch) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_errno, 0) -	ZEND_ARG_INFO(0, ch) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_close, 0) -	ZEND_ARG_INFO(0, ch) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_reset, 0) -	ZEND_ARG_INFO(0, ch) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_escape, 0) -	ZEND_ARG_INFO(0, ch) -	ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_unescape, 0) -	ZEND_ARG_INFO(0, ch) -	ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_setopt, 0) -	ZEND_ARG_INFO(0, sh) -	ZEND_ARG_INFO(0, option) -	ZEND_ARG_INFO(0, value) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_init, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_add_handle, 0) -	ZEND_ARG_INFO(0, mh) -	ZEND_ARG_INFO(0, ch) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_remove_handle, 0) -	ZEND_ARG_INFO(0, mh) -	ZEND_ARG_INFO(0, ch) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_multi_select, 0, 0, 1) -	ZEND_ARG_INFO(0, mh) -	ZEND_ARG_INFO(0, timeout) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_multi_exec, 0, 0, 1) -	ZEND_ARG_INFO(0, mh) -	ZEND_ARG_INFO(1, still_running) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_getcontent, 0) -	ZEND_ARG_INFO(0, ch) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_multi_info_read, 0, 0, 1) -	ZEND_ARG_INFO(0, mh) -	ZEND_ARG_INFO(1, msgs_in_queue) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_close, 0) -	ZEND_ARG_INFO(0, mh) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_errno, 0) -	ZEND_ARG_INFO(0, mh) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_strerror, 0) -	ZEND_ARG_INFO(0, errornum) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_strerror, 0) -	ZEND_ARG_INFO(0, errornum) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_share_strerror, 0) -	ZEND_ARG_INFO(0, errornum) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_share_init, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_share_close, 0) -	ZEND_ARG_INFO(0, sh) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_share_setopt, 0) -	ZEND_ARG_INFO(0, sh) -	ZEND_ARG_INFO(0, option) -	ZEND_ARG_INFO(0, value) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curl_share_errno, 0) -	ZEND_ARG_INFO(0, sh) -ZEND_END_ARG_INFO() - -#if LIBCURL_VERSION_NUM >= 0x071200 /* Available since 7.18.0 */ -ZEND_BEGIN_ARG_INFO(arginfo_curl_pause, 0) -	ZEND_ARG_INFO(0, ch) -	ZEND_ARG_INFO(0, bitmask) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_curlfile_create, 0, 0, 1) -	ZEND_ARG_INFO(0, filename) -	ZEND_ARG_INFO(0, mimetype) -	ZEND_ARG_INFO(0, postname) -ZEND_END_ARG_INFO() -/* }}} */ -  /* {{{ curl_functions[]   */  static const zend_function_entry curl_functions[] = { @@ -411,6 +262,7 @@ static const zend_function_entry curl_functions[] = {  #if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */  	PHP_FE(curl_pause,               arginfo_curl_pause)  #endif +	PHP_FE(curl_file_create,         arginfo_curl_file_create)  	PHP_FE(curl_multi_init,          arginfo_curl_multi_init)  	PHP_FE(curl_multi_add_handle,    arginfo_curl_multi_add_handle)  	PHP_FE(curl_multi_remove_handle, arginfo_curl_multi_remove_handle) @@ -425,7 +277,6 @@ static const zend_function_entry curl_functions[] = {  	PHP_FE(curl_share_close,         arginfo_curl_share_close)  	PHP_FE(curl_share_setopt,        arginfo_curl_share_setopt)  	PHP_FE(curl_share_errno,         arginfo_curl_share_errno) -	PHP_FE(curl_file_create,         arginfo_curlfile_create)  	PHP_FE_END  };  /* }}} */ @@ -2108,7 +1959,7 @@ PHP_FUNCTION(curl_copy_handle)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	cp = curl_easy_duphandle(ch->cp); @@ -3074,7 +2925,7 @@ PHP_FUNCTION(curl_setopt)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (options <= 0 && options != CURLOPT_SAFE_UPLOAD) { @@ -3105,7 +2956,7 @@ PHP_FUNCTION(curl_setopt_array)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(arr), option, string_key, entry) { @@ -3152,7 +3003,7 @@ PHP_FUNCTION(curl_exec)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	_php_curl_verify_handlers(ch, 1); @@ -3211,7 +3062,7 @@ PHP_FUNCTION(curl_getinfo)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (ZEND_NUM_ARGS() < 2) { @@ -3475,7 +3326,7 @@ PHP_FUNCTION(curl_error)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (ch->err.no) { @@ -3499,7 +3350,7 @@ PHP_FUNCTION(curl_errno)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	RETURN_LONG(ch->err.no); @@ -3518,7 +3369,7 @@ PHP_FUNCTION(curl_close)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (ch->in_callback) { @@ -3692,7 +3543,7 @@ PHP_FUNCTION(curl_reset)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (ch->in_callback) { @@ -3721,7 +3572,7 @@ PHP_FUNCTION(curl_escape)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (ZEND_SIZE_T_INT_OVFL(ZSTR_LEN(str))) { @@ -3753,7 +3604,7 @@ PHP_FUNCTION(curl_unescape)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (ZEND_SIZE_T_INT_OVFL(ZSTR_LEN(str))) { @@ -3784,7 +3635,7 @@ PHP_FUNCTION(curl_pause)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	RETURN_LONG(curl_easy_pause(ch->cp, bitmask)); diff --git a/ext/curl/multi.c b/ext/curl/multi.c index 4ba165a09d..bbed3fe1f2 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -1,7 +1,5 @@  /*     +----------------------------------------------------------------------+ -   | PHP Version 7                                                        | -   +----------------------------------------------------------------------+     | Copyright (c) The PHP Group                                          |     +----------------------------------------------------------------------+     | This source file is subject to version 3.01 of the PHP license,      | @@ -85,11 +83,11 @@ PHP_FUNCTION(curl_multi_add_handle)  	ZEND_PARSE_PARAMETERS_END();  	if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if ((ch = (php_curl *)zend_fetch_resource(Z_RES_P(z_ch), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	_php_curl_cleanup_handle(ch); @@ -171,11 +169,11 @@ PHP_FUNCTION(curl_multi_remove_handle)  	ZEND_PARSE_PARAMETERS_END();  	if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if ((ch = (php_curl *)zend_fetch_resource(Z_RES_P(z_ch), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	error = curl_multi_remove_handle(mh->multi, ch->cp); @@ -224,7 +222,7 @@ PHP_FUNCTION(curl_multi_select)  	ZEND_PARSE_PARAMETERS_END();  	if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  #if LIBCURL_VERSION_NUM >= 0x071c00 /* Available since 7.28.0 */ @@ -269,7 +267,7 @@ PHP_FUNCTION(curl_multi_exec)  	ZEND_PARSE_PARAMETERS_END();  	if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	{ @@ -281,7 +279,7 @@ PHP_FUNCTION(curl_multi_exec)  			pz_ch = (zval *)zend_llist_get_next_ex(&mh->easyh, &pos)) {  			if ((ch = (php_curl *)zend_fetch_resource(Z_RES_P(pz_ch), le_curl_name, le_curl)) == NULL) { -				RETURN_FALSE; +				return;  			}  			_php_curl_verify_handlers(ch, 1); @@ -309,7 +307,7 @@ PHP_FUNCTION(curl_multi_getcontent)  	ZEND_PARSE_PARAMETERS_END();  	if ((ch = (php_curl *)zend_fetch_resource(Z_RES_P(z_ch), le_curl_name, le_curl)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (ch->handlers->write->method == PHP_CURL_RETURN) { @@ -342,7 +340,7 @@ PHP_FUNCTION(curl_multi_info_read)  	ZEND_PARSE_PARAMETERS_END();  	if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	tmp_msg = curl_multi_info_read(mh->multi, &queued_msgs); @@ -396,7 +394,7 @@ PHP_FUNCTION(curl_multi_close)  	ZEND_PARSE_PARAMETERS_END();  	if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	zend_list_close(Z_RES_P(z_mh)); @@ -448,7 +446,7 @@ PHP_FUNCTION(curl_multi_errno)  	ZEND_PARSE_PARAMETERS_END();  	if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	RETURN_LONG(mh->err.no); @@ -627,7 +625,7 @@ PHP_FUNCTION(curl_multi_setopt)  	ZEND_PARSE_PARAMETERS_END();  	if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (!_php_curl_multi_setopt(mh, options, zvalue, return_value)) { diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h index 5d93f16c03..44a86bff8b 100644 --- a/ext/curl/php_curl.h +++ b/ext/curl/php_curl.h @@ -1,7 +1,5 @@  /*     +----------------------------------------------------------------------+ -   | PHP Version 7                                                        | -   +----------------------------------------------------------------------+     | Copyright (c) The PHP Group                                          |     +----------------------------------------------------------------------+     | This source file is subject to version 3.01 of the PHP license,      | diff --git a/ext/curl/share.c b/ext/curl/share.c index 242cad09cd..2814d0b822 100644 --- a/ext/curl/share.c +++ b/ext/curl/share.c @@ -1,7 +1,5 @@  /*     +----------------------------------------------------------------------+ -   | PHP Version 7                                                        | -   +----------------------------------------------------------------------+     | Copyright (c) The PHP Group                                          |     +----------------------------------------------------------------------+     | This source file is subject to version 3.01 of the PHP license,      | @@ -62,7 +60,7 @@ PHP_FUNCTION(curl_share_close)  	ZEND_PARSE_PARAMETERS_END();  	if ((sh = (php_curlsh *)zend_fetch_resource(Z_RES_P(z_sh), le_curl_share_handle_name, le_curl_share_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	zend_list_close(Z_RES_P(z_sh)); @@ -106,7 +104,7 @@ PHP_FUNCTION(curl_share_setopt)  	ZEND_PARSE_PARAMETERS_END();  	if ((sh = (php_curlsh *)zend_fetch_resource(Z_RES_P(zid), le_curl_share_handle_name, le_curl_share_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	if (!_php_curl_share_setopt(sh, options, zvalue, return_value)) { @@ -140,7 +138,7 @@ PHP_FUNCTION(curl_share_errno)  	ZEND_PARSE_PARAMETERS_END();  	if ((sh = (php_curlsh *)zend_fetch_resource(Z_RES_P(z_sh), le_curl_share_handle_name, le_curl_share_handle)) == NULL) { -		RETURN_FALSE; +		return;  	}  	RETURN_LONG(sh->err.no); diff --git a/ext/curl/tests/curl_multi_close_basic001.phpt b/ext/curl/tests/curl_multi_close_basic001.phpt index 0cabf2cbad..cf47668b30 100644 --- a/ext/curl/tests/curl_multi_close_basic001.phpt +++ b/ext/curl/tests/curl_multi_close_basic001.phpt @@ -11,15 +11,17 @@ var_dump($cmh);  $multi_close_result = curl_multi_close($cmh);  var_dump($multi_close_result);  var_dump($cmh); -$bad_mh_close_result = curl_multi_close($cmh); -var_dump($bad_mh_close_result); +try { +    $bad_mh_close_result = curl_multi_close($cmh); +    var_dump($bad_mh_close_result); +} catch (TypeError $e) { +    echo $e->getMessage(), "\n"; +}  ?>  ===DONE===  --EXPECTF--  resource(%d) of type (curl_multi)  NULL  resource(%d) of type (Unknown) - -Warning: curl_multi_close(): supplied resource is not a valid cURL Multi Handle resource in %s on line %d -bool(false) +curl_multi_close(): supplied resource is not a valid cURL Multi Handle resource  ===DONE=== diff --git a/ext/curl/tests/curl_setopt_error.phpt b/ext/curl/tests/curl_setopt_error.phpt index ab864d4b2d..0a7db7265f 100644 --- a/ext/curl/tests/curl_setopt_error.phpt +++ b/ext/curl/tests/curl_setopt_error.phpt @@ -9,37 +9,17 @@ Paul Sohier  <?php  echo "*** curl_setopt() call with incorrect parameters\n";  $ch = curl_init(); -curl_setopt(); -curl_setopt(false); -curl_setopt($ch); -curl_setopt($ch, false); -curl_setopt($ch, -10); -curl_setopt($ch, ''); -curl_setopt($ch, 1, false); +try { +    curl_setopt($ch, '', false); +} catch (TypeError $e) { +    echo $e->getMessage(), "\n"; +} -curl_setopt(false, false, false); -curl_setopt($ch, '', false); -curl_setopt($ch, 1, '');  curl_setopt($ch, -10, 0);  ?>  --EXPECTF--  *** curl_setopt() call with incorrect parameters - -Warning: curl_setopt() expects exactly 3 parameters, 0 given in %s on line %d - -Warning: curl_setopt() expects exactly 3 parameters, 1 given in %s on line %d - -Warning: curl_setopt() expects exactly 3 parameters, 1 given in %s on line %d - -Warning: curl_setopt() expects exactly 3 parameters, 2 given in %s on line %d - -Warning: curl_setopt() expects exactly 3 parameters, 2 given in %s on line %d - -Warning: curl_setopt() expects exactly 3 parameters, 2 given in %s on line %d - -Warning: curl_setopt() expects parameter 1 to be resource, bool given in %s on line %d - -Warning: curl_setopt() expects parameter 2 to be int, string given in %s on line %d +curl_setopt() expects parameter 2 to be int, string given  Warning: curl_setopt(): Invalid curl configuration option in %scurl_setopt_error.php on line %d  | 
