X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_client_curl_user.c;h=1f69a51cb7203e3d4acb05502f512a703a1f1eb6;hp=d345e27e96bc30b2d7c985038073a011b885b9e5;hb=refs%2Fheads%2Fmaster;hpb=b41323e1817c50d062b27da798c7db35fa58212c diff --git a/src/php_http_client_curl_user.c b/src/php_http_client_curl_user.c index d345e27..2e646f6 100644 --- a/src/php_http_client_curl_user.c +++ b/src/php_http_client_curl_user.c @@ -15,14 +15,19 @@ #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; @@ -57,9 +62,7 @@ static void php_http_client_curl_user_timer(CURLM *multi, long timeout_ms, void 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); @@ -188,6 +191,10 @@ static void *php_http_client_curl_user_init(php_http_client_t *client, void *use 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); @@ -316,7 +323,7 @@ PHP_MINIT_FUNCTION(http_client_curl_user) return SUCCESS; } -#endif /* PHP_HTTP_HAVE_CURL */ +#endif /* PHP_HTTP_HAVE_LIBCURL */ /* * Local variables: