X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_request_pool_api.c;h=76bd181f0764a023b2b9b99a19c5dfbcbdcd2397;hp=b78e354174ab5e358195a662bd265499cd123bfe;hb=ec76b279f999eaa62eeb83478f953ad477c6fe66;hpb=b0919f33875667baecb05888fba006d5652d68d1 diff --git a/http_request_pool_api.c b/http_request_pool_api.c index b78e354..76bd181 100644 --- a/http_request_pool_api.c +++ b/http_request_pool_api.c @@ -168,14 +168,23 @@ PHP_HTTP_API void _http_request_pool_detach_all(http_request_pool *pool TSRMLS_D for (handle = zend_llist_get_first_ex(&pool->handles, &pos); handle; handle = zend_llist_get_next_ex(&pool->handles, &pos)) { handles[i++] = *handle; } + /* should never happen */ + if (i != count) { + zend_error(E_ERROR, "number of fetched request handles do not match overall count"); + count = i; + } for (i = 0; i < count; ++i) { http_request_pool_detach(pool, handles[i]); } efree(handles); } +#if HTTP_DEBUG_REQPOOLS + 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) { @@ -183,9 +192,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()); @@ -197,6 +203,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;