release 2.6.0
[m6w6/ext-http] / src / php_http_client_curl_user.c
index 94d7f41294818f49a3cb3f0776e72320faf1adf8..f4a995894ba8a2ddad3ce1cee1d71b6e165f2a3a 100644 (file)
@@ -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