build: fix master
[m6w6/ext-http] / src / php_http_client.c
index cedc239b68c1f780c2df5ef7b46b5bf74f448992..2f8b4aed62df35b79016a276930f21c4666b27b0 100644 (file)
@@ -689,7 +689,7 @@ static PHP_METHOD(HttpClient, enqueue)
        zend_fcall_info_cache fcc = empty_fcall_info_cache;
        php_http_client_object_t *obj;
        php_http_message_object_t *msg_obj;
-       php_http_client_enqueue_t q;
+       php_http_client_enqueue_t q = {0};
 
        php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS(), "O|f", &request, php_http_get_client_request_class_entry(), &fci, &fcc), invalid_arg, return);
 
@@ -701,6 +701,17 @@ static PHP_METHOD(HttpClient, enqueue)
                return;
        }
 
+       /* set early for progress callback */
+       q.opaque = msg_obj;
+
+       if (obj->client->callback.progress.func) {
+               php_http_client_progress_state_t progress = {0};
+
+               progress.info = "prepare";
+               obj->client->callback.progress.func(obj->client->callback.progress.arg, obj->client, &q, &progress);
+       }
+
+       Z_ADDREF_P(request);
        q.request = msg_obj->message;
        q.options = combined_options(getThis(), request);
        q.dtor = msg_queue_dtor;
@@ -711,12 +722,10 @@ static PHP_METHOD(HttpClient, enqueue)
        if (fci.size) {
                Z_TRY_ADDREF(fci.function_name);
                if (fci.object) {
-                       ++GC_REFCOUNT(fci.object);
+                       GC_ADDREF(fci.object);
                }
        }
 
-       Z_ADDREF_P(request);
-
        php_http_expect(SUCCESS == php_http_client_enqueue(obj->client, &q), runtime,
                        msg_queue_dtor(&q);
                        return;
@@ -781,7 +790,7 @@ static PHP_METHOD(HttpClient, requeue)
        if (fci.size) {
                Z_TRY_ADDREF(fci.function_name);
                if (fci.object) {
-                       ++GC_REFCOUNT(fci.object);
+                       GC_ADDREF(fci.object);
                }
        }
 
@@ -1305,7 +1314,7 @@ static PHP_METHOD(HttpClient, setDebug)
 }
 
 static zend_function_entry php_http_client_methods[] = {
-       PHP_ME(HttpClient, __construct,          ai_HttpClient_construct,            ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
+       PHP_ME(HttpClient, __construct,          ai_HttpClient_construct,            ZEND_ACC_PUBLIC)
        PHP_ME(HttpClient, reset,                ai_HttpClient_reset,                ZEND_ACC_PUBLIC)
        PHP_ME(HttpClient, enqueue,              ai_HttpClient_enqueue,              ZEND_ACC_PUBLIC)
        PHP_ME(HttpClient, dequeue,              ai_HttpClient_dequeue,              ZEND_ACC_PUBLIC)