summaryrefslogtreecommitdiff
path: root/ext/curl/multi.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/curl/multi.c')
-rw-r--r--ext/curl/multi.c45
1 files changed, 17 insertions, 28 deletions
diff --git a/ext/curl/multi.c b/ext/curl/multi.c
index 3b329088c2..e0c0f7969d 100644
--- a/ext/curl/multi.c
+++ b/ext/curl/multi.c
@@ -67,7 +67,6 @@ PHP_FUNCTION(curl_multi_init)
object_init_ex(return_value, curl_multi_ce);
mh = Z_CURL_MULTI_P(return_value);
mh->multi = curl_multi_init();
- mh->handlers = ecalloc(1, sizeof(php_curlm_handlers));
zend_llist_init(&mh->easyh, sizeof(zval), _php_curl_multi_cleanup_list, 0);
}
@@ -244,12 +243,12 @@ PHP_FUNCTION(curl_multi_getcontent)
ch = Z_CURL_P(z_ch);
- if (ch->handlers->write->method == PHP_CURL_RETURN) {
- if (!ch->handlers->write->buf.s) {
+ if (ch->handlers.write->method == PHP_CURL_RETURN) {
+ if (!ch->handlers.write->buf.s) {
RETURN_EMPTY_STRING();
}
- smart_str_0(&ch->handlers->write->buf);
- RETURN_STR_COPY(ch->handlers->write->buf.s);
+ smart_str_0(&ch->handlers.write->buf);
+ RETURN_STR_COPY(ch->handlers.write->buf.s);
}
RETURN_NULL();
@@ -370,7 +369,7 @@ static int _php_server_push_callback(CURL *parent_ch, CURL *easy, size_t num_hea
php_curl *parent;
php_curlm *mh = (php_curlm *)userp;
size_t rval = CURL_PUSH_DENY;
- php_curlm_server_push *t = mh->handlers->server_push;
+ php_curl_callback *t = mh->handlers.server_push;
zval *pz_parent_ch = NULL;
zval pz_ch;
zval headers;
@@ -459,15 +458,14 @@ static int _php_curl_multi_setopt(php_curlm *mh, zend_long option, zval *zvalue,
}
#if LIBCURL_VERSION_NUM > 0x072D00 /* Available since 7.45.0 */
case CURLMOPT_PUSHFUNCTION:
- if (mh->handlers->server_push == NULL) {
- mh->handlers->server_push = ecalloc(1, sizeof(php_curlm_server_push));
- } else if (!Z_ISUNDEF(mh->handlers->server_push->func_name)) {
- zval_ptr_dtor(&mh->handlers->server_push->func_name);
- mh->handlers->server_push->fci_cache = empty_fcall_info_cache;
+ if (mh->handlers.server_push == NULL) {
+ mh->handlers.server_push = ecalloc(1, sizeof(php_curl_callback));
+ } else if (!Z_ISUNDEF(mh->handlers.server_push->func_name)) {
+ zval_ptr_dtor(&mh->handlers.server_push->func_name);
+ mh->handlers.server_push->fci_cache = empty_fcall_info_cache;
}
- ZVAL_COPY(&mh->handlers->server_push->func_name, zvalue);
- mh->handlers->server_push->method = PHP_CURL_USER;
+ ZVAL_COPY(&mh->handlers.server_push->func_name, zvalue);
error = curl_multi_setopt(mh->multi, option, _php_server_push_callback);
if (error != CURLM_OK) {
return 0;
@@ -553,12 +551,9 @@ void curl_multi_free_obj(zend_object *object)
curl_multi_cleanup(mh->multi);
zend_llist_clean(&mh->easyh);
- if (mh->handlers->server_push) {
- zval_ptr_dtor(&mh->handlers->server_push->func_name);
- efree(mh->handlers->server_push);
- }
- if (mh->handlers) {
- efree(mh->handlers);
+ if (mh->handlers.server_push) {
+ zval_ptr_dtor(&mh->handlers.server_push->func_name);
+ efree(mh->handlers.server_push);
}
zend_object_std_dtor(&mh->std);
@@ -570,10 +565,8 @@ static HashTable *curl_multi_get_gc(zend_object *object, zval **table, int *n)
zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
- if (curl_multi->handlers) {
- if (curl_multi->handlers->server_push) {
- zend_get_gc_buffer_add_zval(gc_buffer, &curl_multi->handlers->server_push->func_name);
- }
+ if (curl_multi->handlers.server_push) {
+ zend_get_gc_buffer_add_zval(gc_buffer, &curl_multi->handlers.server_push->func_name);
}
zend_llist_position pos;
@@ -587,11 +580,7 @@ static HashTable *curl_multi_get_gc(zend_object *object, zval **table, int *n)
return zend_std_get_properties(object);
}
-void curl_multi_register_class(const zend_function_entry *method_entries) {
- zend_class_entry ce_multi;
- INIT_CLASS_ENTRY(ce_multi, "CurlMultiHandle", method_entries);
- curl_multi_ce = zend_register_internal_class(&ce_multi);
- curl_multi_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
+void curl_multi_register_handlers(void) {
curl_multi_ce->create_object = curl_multi_create_object;
curl_multi_ce->serialize = zend_class_serialize_deny;
curl_multi_ce->unserialize = zend_class_unserialize_deny;