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=a30d666098489d81559aece92aee42247163fd38;hb=ad1dfac848dbbb295151c22b4f6fbcad13ce7a56;hpb=43a9a6f8cb56e25c3770d652ce77045f89f68ca6 diff --git a/src/php_http_client_curl_user.c b/src/php_http_client_curl_user.c index a30d666..1f69a51 100644 --- a/src/php_http_client_curl_user.c +++ b/src/php_http_client_curl_user.c @@ -15,20 +15,21 @@ #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) +static ZEND_NAMED_FUNCTION(php_http_client_curl_user_handler) { zval *zstream = NULL, *zclient = NULL; php_stream *stream = NULL; 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(), "O|rl", &zclient, php_http_client_get_class_entry(), &zstream, &action)) { return; @@ -43,6 +44,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) @@ -55,7 +59,7 @@ static void php_http_client_curl_user_timer(CURLM *multi, long timeout_ms, void if (timeout_ms <= 0) { php_http_client_curl_loop(context->client, CURL_SOCKET_TIMEOUT, 0); - } else if (timeout_ms > 0) { + } else { zval args[1], *ztimeout = &args[0]; ZVAL_LONG(ztimeout, timeout_ms); @@ -102,7 +106,7 @@ static int php_http_client_curl_user_socket(CURL *easy, curl_socket_t sock, int 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); @@ -256,7 +260,8 @@ zend_class_entry *php_http_client_curl_user_get_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 @@ -311,7 +316,7 @@ PHP_MINIT_FUNCTION(http_client_curl_user) return SUCCESS; } -#endif /* PHP_HTTP_HAVE_CURL */ +#endif /* PHP_HTTP_HAVE_LIBCURL */ /* * Local variables: