- if (neon->progress.callback) {
- zval retval;
- TSRMLS_FETCH_FROM_CTX(h->ts);
-
- INIT_PZVAL(&retval);
- ZVAL_NULL(&retval);
-
- with_error_handling(EH_NORMAL, NULL) {
- if (neon->progress.pass_state) {
- zval *param;
-
- MAKE_STD_ZVAL(param);
- array_init(param);
- add_assoc_double(param, "dltotal", neon->progress.state.dl.total);
- add_assoc_double(param, "dlnow", neon->progress.state.dl.now);
- add_assoc_double(param, "ultotal", neon->progress.state.ul.total);
- add_assoc_double(param, "ulnow", neon->progress.state.ul.now);
-
- neon->progress.in_cb = 1;
- call_user_function(EG(function_table), NULL, neon->progress.callback, &retval, 1, ¶m TSRMLS_CC);
- neon->progress.in_cb = 0;
-
- zval_ptr_dtor(¶m);
- } else {
- neon->progress.in_cb = 1;
- call_user_function(EG(function_table), NULL, neon->progress.callback, &retval, 0, NULL TSRMLS_CC);
- neon->progress.in_cb = 0;
- }
- } end_error_handling();
-
- zval_dtor(&retval);
- }