php_http_client_progress_callback_t *callback = emalloc(sizeof(*callback));
callback->type = PHP_HTTP_CLIENT_PROGRESS_CALLBACK_USER;
- callback->pass_state = 0;
MAKE_STD_ZVAL(callback->func.user);
array_init(callback->func.user);
Z_ADDREF_P(zclient);
PHP_MINIT_FUNCTION(http_client)
{
- PHP_HTTP_REGISTER_CLASS(http\\Client, AbstractClient, http_client, php_http_object_get_class_entry(), ZEND_ACC_ABSTRACT);
+ PHP_HTTP_REGISTER_CLASS(http\\Client, AbstractClient, http_client, php_http_object_get_class_entry(), ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
php_http_client_class_entry->create_object = php_http_client_object_new;
memcpy(&php_http_client_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
php_http_client_object_handlers.clone_obj = php_http_client_object_clone;
void (*intern)(php_http_client_progress_state_t* TSRMLS_DC);
} func;
unsigned type:1;
- unsigned pass_state:1;
} php_http_client_progress_callback_t;
typedef struct php_http_client_progress {
with_error_handling(EH_NORMAL, NULL) {
switch (progress->callback->type) {
case PHP_HTTP_CLIENT_PROGRESS_CALLBACK_USER:
- if (progress->callback->pass_state) {
- zval *param;
-
- MAKE_STD_ZVAL(param);
- array_init(param);
- add_assoc_bool(param, "started", progress->state.started);
- add_assoc_bool(param, "finished", progress->state.finished);
- add_assoc_string(param, "info", estrdup(progress->state.info), 0);
- add_assoc_double(param, "dltotal", progress->state.dl.total);
- add_assoc_double(param, "dlnow", progress->state.dl.now);
- add_assoc_double(param, "ultotal", progress->state.ul.total);
- add_assoc_double(param, "ulnow", progress->state.ul.now);
-
- progress->in_cb = 1;
- call_user_function(EG(function_table), NULL, progress->callback->func.user, &retval, 1, ¶m TSRMLS_CC);
- progress->in_cb = 0;
-
- zval_ptr_dtor(¶m);
- } else {
- progress->in_cb = 1;
- call_user_function(EG(function_table), NULL, progress->callback->func.user, &retval, 0, NULL TSRMLS_CC);
- progress->in_cb = 0;
- }
+ progress->in_cb = 1;
+ call_user_function(EG(function_table), NULL, progress->callback->func.user, &retval, 0, NULL TSRMLS_CC);
+ progress->in_cb = 0;
break;
case PHP_HTTP_CLIENT_PROGRESS_CALLBACK_INTERN:
- progress->callback->func.intern(progress->callback->pass_state ? &progress->state : NULL TSRMLS_CC);
+ progress->callback->func.intern(&progress->state TSRMLS_CC);
break;
default:
break;