Skip to content

Commit cd7f51c

Browse files
committed
support curl_multi_info_read
1 parent 2a76648 commit cd7f51c

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

ext-src/swoole_runtime.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1409,6 +1409,7 @@ bool PHPCoroutine::enable_hook(uint32_t flags) {
14091409
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_exec);
14101410
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_select);
14111411
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_getcontent);
1412+
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_info_read);
14121413
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_remove_handle);
14131414
SW_HOOK_NATIVE_FUNC_WITH_ARG_INFO(curl_multi_close);
14141415
}
@@ -1431,6 +1432,9 @@ bool PHPCoroutine::enable_hook(uint32_t flags) {
14311432
SW_UNHOOK_FUNC(curl_multi_init);
14321433
SW_UNHOOK_FUNC(curl_multi_add_handle);
14331434
SW_UNHOOK_FUNC(curl_multi_exec);
1435+
SW_UNHOOK_FUNC(curl_multi_select);
1436+
SW_UNHOOK_FUNC(curl_multi_getcontent);
1437+
SW_UNHOOK_FUNC(curl_multi_info_read);
14341438
SW_UNHOOK_FUNC(curl_multi_remove_handle);
14351439
SW_UNHOOK_FUNC(curl_multi_close);
14361440
}

tests/swoole_runtime/curl_native/multi.phpt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ run(function () {
4646
}
4747
}
4848

49+
$info1 = curl_multi_info_read($mh);
50+
$info2 = curl_multi_info_read($mh);
51+
$info3 = curl_multi_info_read($mh);
52+
53+
Assert::eq($info1['msg'], CURLMSG_DONE);
54+
Assert::eq($info2['msg'], CURLMSG_DONE);
55+
Assert::eq($info3, false);
56+
4957
Assert::contains(curl_multi_getcontent($ch1), 'baidu.com');
5058
Assert::contains(curl_multi_getcontent($ch2), '中央人民政府门户网站');
5159

thirdparty/php/curl/interface.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ php_curl *_php_curl_get_handle(zval *zid, bool exclusive) {
118118
ch = Z_CURL_P(zid);
119119
#else
120120
if ((ch = (php_curl *) zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) {
121-
swFatalError(SW_ERROR_INVALID_PARAMS, "cURL is executing, cannot be operated");
121+
swFatalError(SW_ERROR_INVALID_PARAMS, "supplied resource is not a valid " le_curl_name "Handle resource ");
122122
return nullptr;
123123
}
124124
#endif

thirdparty/php/curl/multi.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,12 @@ static inline php_curlm *curl_multi_from_obj(zend_object *obj) {
4646
extern int _php_curl_get_le_curl();
4747
extern int _php_curl_get_le_curl_multi();
4848
static inline php_curlm *Z_CURL_MULTI_P(zval *zv) {
49-
return (php_curlm *) zend_fetch_resource(Z_RES_P(zv), le_curl_multi_handle_name, _php_curl_get_le_curl_multi());
49+
php_curlm *cm;
50+
if ((cm = (php_curlm *) zend_fetch_resource(Z_RES_P(zv), le_curl_multi_handle_name, _php_curl_get_le_curl_multi())) == NULL) {
51+
swFatalError(SW_ERROR_INVALID_PARAMS, "supplied resource is not a valid " le_curl_multi_handle_name "Handle resource ");
52+
return nullptr;
53+
}
54+
return cm;
5055
}
5156
#endif
5257

0 commit comments

Comments
 (0)