re-enable the factory
[m6w6/ext-http] / php_http_client_curl.c
index f16349e2f0472320875d300657f55b9a57f59ad0..554b57c77360ef97eacd08dd9f6a82de5c2105e3 100644 (file)
@@ -1022,10 +1022,8 @@ static STATUS php_http_client_curl_reset(php_http_client_t *h)
        return SUCCESS;
 }
 
-static STATUS php_http_client_curl_exec(php_http_client_t *h, php_http_message_t *msg)
+STATUS php_http_client_curl_prepare(php_http_client_t *h, php_http_message_t *msg)
 {
-       uint tries = 0;
-       CURLcode result;
        php_http_client_curl_t *curl = h->ctx;
        php_http_client_curl_storage_t *storage = get_storage(curl->handle);
        TSRMLS_FETCH_FROM_CTX(h->ts);
@@ -1033,6 +1031,7 @@ static STATUS php_http_client_curl_exec(php_http_client_t *h, php_http_message_t
        /* request url */
        if (!PHP_HTTP_INFO(msg).request.url) {
                php_http_error(HE_WARNING, PHP_HTTP_E_CLIENT, "Cannot request empty URL");
+               return FAILURE;
        }
        storage->errorbuffer[0] = '\0';
        if (storage->url) {
@@ -1110,6 +1109,21 @@ static STATUS php_http_client_curl_exec(php_http_client_t *h, php_http_message_t
                curl_easy_setopt(curl->handle, CURLOPT_POSTFIELDSIZE, body_size);
        }
 
+       return SUCCESS;
+}
+
+static STATUS php_http_client_curl_exec(php_http_client_t *h, php_http_message_t *msg)
+{
+       uint tries = 0;
+       CURLcode result;
+       php_http_client_curl_t *curl = h->ctx;
+       php_http_client_curl_storage_t *storage = get_storage(curl->handle);
+       TSRMLS_FETCH_FROM_CTX(h->ts);
+
+       if (SUCCESS != php_http_client_curl_prepare(h, msg)) {
+               return FAILURE;
+       }
+
 retry:
        if (CURLE_OK != (result = curl_easy_perform(curl->handle))) {
                php_http_error(HE_WARNING, PHP_HTTP_E_CLIENT, "%s; %s (%s)", curl_easy_strerror(result), storage->errorbuffer, storage->url);
@@ -1229,6 +1243,11 @@ static php_http_resource_factory_ops_t php_http_client_curl_resource_factory_ops
        php_http_curl_dtor
 };
 
+static zend_class_entry *get_class_entry(void)
+{
+       return php_http_client_curl_class_entry;
+}
+
 static php_http_client_ops_t php_http_client_curl_ops = {
        &php_http_client_curl_resource_factory_ops,
        php_http_client_curl_init,
@@ -1237,7 +1256,9 @@ static php_http_client_ops_t php_http_client_curl_ops = {
        php_http_client_curl_reset,
        php_http_client_curl_exec,
        php_http_client_curl_setopt,
-       php_http_client_curl_getopt
+       php_http_client_curl_getopt,
+       (php_http_new_t) php_http_client_curl_object_new_ex,
+       get_class_entry
 };
 
 PHP_HTTP_API php_http_client_ops_t *php_http_client_curl_get_ops(void)