X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_client_curl_user.c;h=f4a995894ba8a2ddad3ce1cee1d71b6e165f2a3a;hp=94d7f41294818f49a3cb3f0776e72320faf1adf8;hb=refs%2Fheads%2Fv2.6.x;hpb=55d74c2d07edcf6d51fe62bc257c3bde0f7f25d4 diff --git a/src/php_http_client_curl_user.c b/src/php_http_client_curl_user.c index 94d7f41..f4a9958 100644 --- a/src/php_http_client_curl_user.c +++ b/src/php_http_client_curl_user.c @@ -43,6 +43,7 @@ static void php_http_client_curl_user_handler(INTERNAL_FUNCTION_PARAMETERS) long action = 0; php_socket_t fd = CURL_SOCKET_TIMEOUT; php_http_client_object_t *client = NULL; + php_http_client_curl_t *curl; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|rl", &zclient, php_http_client_class_entry, &zstream, &action)) { return; @@ -57,6 +58,9 @@ static void php_http_client_curl_user_handler(INTERNAL_FUNCTION_PARAMETERS) } } php_http_client_curl_loop(client->client, fd, action); + + curl = client->client->ctx; + RETVAL_LONG(curl->unfinished); } static void php_http_client_curl_user_timer(CURLM *multi, long timeout_ms, void *timer_data) @@ -212,7 +216,11 @@ static void *php_http_client_curl_user_init(php_http_client_t *client, void *use ctx->closure.internal_function.handler = php_http_client_curl_user_handler; MAKE_STD_ZVAL(zclosure); +#if PHP_VERSION_ID >= 50400 zend_create_closure(zclosure, &ctx->closure, NULL, NULL TSRMLS_CC); +#else + zend_create_closure(zclosure, &ctx->closure TSRMLS_CC); +#endif args[0] = &zclosure; php_http_object_method_init(&init, ctx->user, ZEND_STRL("init") TSRMLS_CC); @@ -243,8 +251,6 @@ static void php_http_client_curl_user_dtor(void **context) fprintf(stderr, "D"); #endif - ZEND_ASSERT(ctx); - curl = ctx->client->ctx; curl_multi_setopt(curl->handle->multi, CURLMOPT_SOCKETDATA, NULL); @@ -280,7 +286,8 @@ php_http_client_curl_ops_t *php_http_client_curl_user_ops_get() zend_class_entry *php_http_client_curl_user_class_entry; ZEND_BEGIN_ARG_INFO_EX(ai_init, 0, 0, 1) - ZEND_ARG_TYPE_INFO(0, run, IS_CALLABLE, 0) + /* using IS_CALLABLE type hint would create a forwards compatibility break */ + ZEND_ARG_INFO(0, run) ZEND_END_ARG_INFO(); ZEND_BEGIN_ARG_INFO_EX(ai_timer, 0, 0, 1) #if PHP_VERSION_ID >= 70000