let the request be able to carry client options
[m6w6/ext-http] / php_http_client_pool_curl.c
index 26e416768a7b37aecad46069156f0ec5497fab1e..12d9454d9f0781e478d6fba3f52368fda8be6c0c 100644 (file)
@@ -66,7 +66,7 @@ static void php_http_client_pool_curl_responsehandler(php_http_client_pool_t *po
                                if (msg->easy_handle == ((php_http_client_curl_t *) (obj->client->ctx))->handle) {
                                        Z_ADDREF_PP(request);
                                        zend_llist_add_element(&pool->clients.finished, request);
-                                       php_http_client_object_responsehandler(obj, *request TSRMLS_CC);
+                                       php_http_client_object_handle_response(*request TSRMLS_CC);
                                }
 
                                zval_ptr_dtor(request);
@@ -274,14 +274,14 @@ static void php_http_client_pool_curl_dtor(php_http_client_pool_t *h)
        h->ctx = NULL;
 }
 
-static STATUS php_http_client_pool_curl_attach(php_http_client_pool_t *h, php_http_client_t *r, const char *m, const char *url, php_http_message_body_t *body)
+static STATUS php_http_client_pool_curl_attach(php_http_client_pool_t *h, php_http_client_t *r, php_http_message_t *m)
 {
        php_http_client_pool_curl_t *curl = h->ctx;
        php_http_client_curl_t *recurl = r->ctx;
        CURLMcode rs;
        TSRMLS_FETCH_FROM_CTX(h->ts);
 
-       if (SUCCESS != php_http_curl_request_prepare(r, m, url, body)) {
+       if (SUCCESS != php_http_client_curl_prepare(r, m)) {
                return FAILURE;
        }
 
@@ -460,18 +460,25 @@ static php_http_resource_factory_ops_t php_http_curlm_resource_factory_ops = {
        php_http_curlm_dtor
 };
 
+static zend_class_entry *get_class_entry(void)
+{
+       return php_http_client_pool_curl_class_entry;
+}
+
 static php_http_client_pool_ops_t php_http_client_pool_curl_ops = {
-               &php_http_curlm_resource_factory_ops,
-               php_http_client_pool_curl_init,
-               NULL /* copy */,
-               php_http_client_pool_curl_dtor,
-               NULL /*reset */,
-               php_http_client_pool_curl_exec,
-               php_http_client_pool_curl_wait,
-               php_http_client_pool_curl_once,
-               php_http_client_pool_curl_attach,
-               php_http_client_pool_curl_detach,
-               php_http_client_pool_curl_setopt,
+       &php_http_curlm_resource_factory_ops,
+       php_http_client_pool_curl_init,
+       NULL /* copy */,
+       php_http_client_pool_curl_dtor,
+       NULL /*reset */,
+       php_http_client_pool_curl_exec,
+       php_http_client_pool_curl_wait,
+       php_http_client_pool_curl_once,
+       php_http_client_pool_curl_attach,
+       php_http_client_pool_curl_detach,
+       php_http_client_pool_curl_setopt,
+       (php_http_new_t) php_http_client_pool_curl_object_new_ex,
+       get_class_entry
 };
 
 PHP_HTTP_API php_http_client_pool_ops_t *php_http_client_pool_curl_get_ops(void)
@@ -482,8 +489,8 @@ PHP_HTTP_API php_http_client_pool_ops_t *php_http_client_pool_curl_get_ops(void)
 #define PHP_HTTP_BEGIN_ARGS(method, req_args)  PHP_HTTP_BEGIN_ARGS_EX(HttpClientCURL, method, 0, req_args)
 #define PHP_HTTP_EMPTY_ARGS(method)                            PHP_HTTP_EMPTY_ARGS_EX(HttpClientCURL, method, 0)
 #define PHP_HTTP_CURL_ME(method, visibility)   PHP_ME(HttpClientCURL, method, PHP_HTTP_ARGS(HttpClientCURL, method), visibility)
-#define PHP_HTTP_CURL_ALIAS(method, func)      PHP_HTTP_STATIC_ME_ALIAS(method, func, PHP_HTTP_ARGS(HttpClientCURL, method))
-#define PHP_HTTP_CURL_MALIAS(me, al, vis)      ZEND_FENTRY(me, ZEND_MN(HttpClientCURL_##al), PHP_HTTP_ARGS(HttpClientCURL, al), vis)
+#define PHP_HTTP_CURL_ALIAS(method, func)              PHP_HTTP_STATIC_ME_ALIAS(method, func, PHP_HTTP_ARGS(HttpClientCURL, method))
+#define PHP_HTTP_CURL_MALIAS(me, al, vis)              ZEND_FENTRY(me, ZEND_MN(HttpClientCURL_##al), PHP_HTTP_ARGS(HttpClientCURL, al), vis)
 
 zend_class_entry *php_http_client_pool_curl_class_entry;
 zend_function_entry php_http_client_pool_curl_method_entry[] = {
@@ -525,7 +532,7 @@ PHP_MINIT_FUNCTION(http_client_pool_curl)
                return FAILURE;
        }
 
-       PHP_HTTP_REGISTER_CLASS(http\\Client\\Pool, CURL, http_client_pool_curl, php_http_client_pool_class_entry, 0);
+       PHP_HTTP_REGISTER_CLASS(http\\Client\\Pool, CURL, http_client_pool_curl, php_http_client_pool_get_class_entry(), 0);
        php_http_client_pool_curl_class_entry->create_object = php_http_client_pool_curl_object_new;
 
        return SUCCESS;