X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_request_pool_api.c;h=cca4fbaf0241b5d2a661b99711b6ba0c41f322d6;hp=64224fe5df87217a7a341bf4da62e9372e19240a;hb=9d4113f62a7a8fe2fe3879b94a3712d11cec8726;hpb=a7c9ca5fe4922c1064b3397b61eca6d83cea6cfa diff --git a/http_request_pool_api.c b/http_request_pool_api.c index 64224fe..cca4fba 100644 --- a/http_request_pool_api.c +++ b/http_request_pool_api.c @@ -55,14 +55,12 @@ PHP_HTTP_API http_request_pool *_http_request_pool_init(http_request_pool *pool pool->ch = NULL; } + HTTP_CHECK_CURL_INIT(pool->ch, curl_multi_init(), ;); if (!pool->ch) { - if (!(pool->ch = curl_multi_init())) { - http_error(HE_WARNING, HTTP_E_REQUEST, "Could not initialize curl"); - if (free_pool) { - efree(pool); - } - return NULL; + if (free_pool) { + efree(pool); } + return NULL; } pool->unfinished = 0; @@ -179,13 +177,12 @@ PHP_HTTP_API void _http_request_pool_detach_all(http_request_pool *pool TSRMLS_D efree(handles); } #if HTTP_DEBUG_REQPOOLS - fprintf(srderr, "Destroying %d request bodies of pool %p\n", zend_llist_count(&pool->bodies), pool); + fprintf(stderr, "Destroying %d request bodies of pool %p\n", zend_llist_count(&pool->bodies), pool); #endif /* free created bodies too */ zend_llist_clean(&pool->bodies); } - /* {{{ STATUS http_request_pool_send(http_request_pool *) */ PHP_HTTP_API STATUS _http_request_pool_send(http_request_pool *pool TSRMLS_DC) { @@ -193,9 +190,6 @@ PHP_HTTP_API STATUS _http_request_pool_send(http_request_pool *pool TSRMLS_DC) fprintf(stderr, "Attempt to send %d requests of pool %p\n", zend_llist_count(&pool->handles), pool); #endif while (http_request_pool_perform(pool)) { -#if HTTP_DEBUG_REQPOOLS - fprintf(stderr, "> %d unfinished requests of pool %p remaining\n", pool->unfinished, pool); -#endif if (SUCCESS != http_request_pool_select(pool)) { #ifdef PHP_WIN32 http_error(HE_WARNING, HTTP_E_SOCKET, WSAGetLastError()); @@ -207,6 +201,17 @@ PHP_HTTP_API STATUS _http_request_pool_send(http_request_pool *pool TSRMLS_DC) } #if HTTP_DEBUG_REQPOOLS fprintf(stderr, "Finished sending %d HttpRequests of pool %p (still unfinished: %d)\n", zend_llist_count(&pool->handles), pool, pool->unfinished); + { + int remaining = 0; + CURLMsg *msg; + /* + * FIXXME: populate --somehow + */ + do { + if (msg = curl_multi_info_read(pool->ch, &remaining)) + fprintf(stderr, "CURL: %s (%d)\n", curl_easy_strerror(msg->data.result), msg->data.result); + } while (remaining); + } #endif zend_llist_apply(&pool->handles, (llist_apply_func_t) http_request_pool_responsehandler TSRMLS_CC); return SUCCESS;