#include "php_network.h"
#include "zend_closures.h"
-#if PHP_HTTP_HAVE_CURL
+#if PHP_HTTP_HAVE_LIBCURL
typedef struct php_http_client_curl_user_ev {
php_stream *socket;
php_http_client_curl_user_context_t *context;
} php_http_client_curl_user_ev_t;
-static void php_http_client_curl_user_handler(INTERNAL_FUNCTION_PARAMETERS)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(ai_user_handler, 0, 1, IS_LONG, 1)
+ ZEND_ARG_OBJ_INFO(0, client, "http\\Client", 0)
+ ZEND_ARG_TYPE_INFO(0, stream, IS_RESOURCE, 1)
+ ZEND_ARG_TYPE_INFO(0, action, IS_LONG, 1)
+ZEND_END_ARG_INFO();
+static ZEND_NAMED_FUNCTION(php_http_client_curl_user_handler)
{
zval *zstream = NULL, *zclient = NULL;
php_stream *stream = NULL;
fprintf(stderr, "\ntimer <- timeout_ms: %ld\n", timeout_ms);
#endif
- if (timeout_ms <= 0) {
- php_http_client_curl_loop(context->client, CURL_SOCKET_TIMEOUT, 0);
- } else if (timeout_ms > 0) {
+ if (timeout_ms >= 0) {
zval args[1], *ztimeout = &args[0];
ZVAL_LONG(ztimeout, timeout_ms);
return -1;
}
- if (action == CURL_POLL_REMOVE && ev) {
+ if (action == CURL_POLL_REMOVE) {
php_stream_close(ev->socket);
efree(ev);
curl_multi_assign(curl->handle->multi, sock, NULL);
ctx->closure.common.type = ZEND_INTERNAL_FUNCTION;
ctx->closure.common.function_name = zend_string_init(ZEND_STRL("php_http_client_curl_user_handler"), 0);
ctx->closure.internal_function.handler = php_http_client_curl_user_handler;
+ ctx->closure.internal_function.arg_info = (zend_internal_arg_info *) &ai_user_handler[1];
+ ctx->closure.internal_function.num_args = 3;
+ ctx->closure.internal_function.required_num_args = 1;
+
zend_create_closure(zclosure, &ctx->closure, NULL, NULL, NULL);
}
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
return SUCCESS;
}
-#endif /* PHP_HTTP_HAVE_CURL */
+#endif /* PHP_HTTP_HAVE_LIBCURL */
/*
* Local variables: