X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_request_pool_api.c;h=437530350af87b17d01aa332b11ba424209b726b;hp=610412ac24f28e4477f40c70aef8e7d96cd99b63;hb=77b24e0e5f85b64a168a4ea4ce83db9339b1f31b;hpb=208e6a34f0d48978279a2e80d336e19dca936486 diff --git a/http_request_pool_api.c b/http_request_pool_api.c index 610412a..4375303 100644 --- a/http_request_pool_api.c +++ b/http_request_pool_api.c @@ -59,6 +59,7 @@ PHP_HTTP_API http_request_pool *_http_request_pool_init(http_request_pool *pool } } + pool->sent = 0; pool->unfinished = 0; zend_llist_init(&pool->handles, sizeof(zval *), (llist_dtor_func_t) ZVAL_PTR_DTOR, 0); zend_llist_init(&pool->bodies, sizeof(http_request_body *), (llist_dtor_func_t) http_request_pool_freebody, 0); @@ -108,7 +109,7 @@ PHP_HTTP_API STATUS _http_request_pool_detach(http_request_pool *pool, zval *req { getObjectEx(http_request_object, req, request); #if HTTP_DEBUG_REQPOOLS - fprintf(stderr, "Detaching request %p (pool: %p) from pool %p\n", req, req->pool, pool); + fprintf(stderr, "Detaching request %p from pool %p\n", req, pool); #endif if (req->pool != pool) { http_error(E_WARNING, HTTP_E_CURL, "HttpRequest object is not attached to this HttpRequestPool"); @@ -161,6 +162,12 @@ PHP_HTTP_API STATUS _http_request_pool_send(http_request_pool *pool TSRMLS_DC) #if HTTP_DEBUG_REQPOOLS fprintf(stderr, "Attempt to send requests of pool %p\n", pool); #endif + if (pool->sent) { + http_error(E_WARNING, HTTP_E_CURL, "HttpRequestPools can only be used once"); + return FAILURE; + } else { + pool->sent = 1; + } while (http_request_pool_perform(pool)) { #if HTTP_DEBUG_REQPOOLS fprintf(stderr, "%d unfinished requests of pool %p remaining\n", pool->unfinished, pool);