Skip to content

Commit

Permalink
support curl_multi_info_read
Browse files Browse the repository at this point in the history
  • Loading branch information
matyhtf committed Mar 15, 2021
1 parent 2a76648 commit cd7f51c
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 2 deletions.
4 changes: 4 additions & 0 deletions ext-src/swoole_runtime.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1409,6 +1409,7 @@ bool PHPCoroutine::enable_hook(uint32_t flags) {
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_exec);
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_select);
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_getcontent);
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_info_read);
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_remove_handle);
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_close);
}
Expand All @@ -1431,6 +1432,9 @@ bool PHPCoroutine::enable_hook(uint32_t flags) {
SW_UNHOOK_FUNC(curl_multi_init);
SW_UNHOOK_FUNC(curl_multi_add_handle);
SW_UNHOOK_FUNC(curl_multi_exec);
SW_UNHOOK_FUNC(curl_multi_select);
SW_UNHOOK_FUNC(curl_multi_getcontent);
SW_UNHOOK_FUNC(curl_multi_info_read);
SW_UNHOOK_FUNC(curl_multi_remove_handle);
SW_UNHOOK_FUNC(curl_multi_close);
}
Expand Down
8 changes: 8 additions & 0 deletions tests/swoole_runtime/curl_native/multi.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,14 @@ run(function () {
}
}

$info1 = curl_multi_info_read($mh);
$info2 = curl_multi_info_read($mh);
$info3 = curl_multi_info_read($mh);

Assert::eq($info1['msg'], CURLMSG_DONE);
Assert::eq($info2['msg'], CURLMSG_DONE);
Assert::eq($info3, false);

Assert::contains(curl_multi_getcontent($ch1), 'baidu.com');
Assert::contains(curl_multi_getcontent($ch2), '中央人民政府门户网站');

Expand Down
2 changes: 1 addition & 1 deletion thirdparty/php/curl/interface.cc
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ php_curl *_php_curl_get_handle(zval *zid, bool exclusive) {
ch = Z_CURL_P(zid);
#else
if ((ch = (php_curl *) zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) {
swFatalError(SW_ERROR_INVALID_PARAMS, "cURL is executing, cannot be operated");
swFatalError(SW_ERROR_INVALID_PARAMS, "supplied resource is not a valid " le_curl_name "Handle resource ");
return nullptr;
}
#endif
Expand Down
7 changes: 6 additions & 1 deletion thirdparty/php/curl/multi.cc
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,12 @@ static inline php_curlm *curl_multi_from_obj(zend_object *obj) {
extern int _php_curl_get_le_curl();
extern int _php_curl_get_le_curl_multi();
static inline php_curlm *Z_CURL_MULTI_P(zval *zv) {
return (php_curlm *) zend_fetch_resource(Z_RES_P(zv), le_curl_multi_handle_name, _php_curl_get_le_curl_multi());
php_curlm *cm;
if ((cm = (php_curlm *) zend_fetch_resource(Z_RES_P(zv), le_curl_multi_handle_name, _php_curl_get_le_curl_multi())) == NULL) {
swFatalError(SW_ERROR_INVALID_PARAMS, "supplied resource is not a valid " le_curl_multi_handle_name "Handle resource ");
return nullptr;
}
return cm;
}
#endif

Expand Down

0 comments on commit cd7f51c

Please sign in to comment.