X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_misc.c;h=bb9906252de18cafed51b29195754e0bb552677f;hb=c0d96fe2c0d156412bcb22bf5b9f5e9ed0046c9c;hp=fa4bbbf2854add35e959331ea20fc48065acc843;hpb=f2f85ecef84a1dfc7982f9fd9b10f5a0dadb2540;p=m6w6%2Fext-http diff --git a/php_http_misc.c b/php_http_misc.c index fa4bbbf..bb99062 100644 --- a/php_http_misc.c +++ b/php_http_misc.c @@ -212,6 +212,22 @@ PHP_HTTP_API size_t php_http_pass_wrapper(php_http_pass_callback_arg_t *cb, cons return cb->cb_zts(cb->cb_arg, str, len TSRMLS_CC); } +PHP_HTTP_API size_t php_http_pass_fcall_callback(void *cb_arg, const char *str, size_t len) +{ + php_http_pass_fcall_arg_t *fcd = cb_arg; + zval *zdata; + TSRMLS_FETCH_FROM_CTX(fcd->ts); + + MAKE_STD_ZVAL(zdata); + ZVAL_STRINGL(zdata, str, len, 1); + if (SUCCESS == zend_fcall_info_argn(&fcd->fci TSRMLS_CC, 2, &fcd->fcz, &zdata)) { + zend_fcall_info_call(&fcd->fci, &fcd->fcc, NULL, NULL TSRMLS_CC); + zend_fcall_info_args_clear(&fcd->fci, 0); + } + zval_ptr_dtor(&zdata); + return len; +} + /* ERROR */ static inline int scope_error_handling(long type TSRMLS_DC) @@ -220,7 +236,7 @@ static inline int scope_error_handling(long type TSRMLS_DC) return EH_THROW; } - if (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), php_http_object_class_entry TSRMLS_CC)) { + if (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), php_http_object_get_class_entry() TSRMLS_CC)) { return php_http_object_get_error_handling(EG(This) TSRMLS_CC); } @@ -235,9 +251,10 @@ void php_http_error(long type TSRMLS_DC, long code, const char *format, ...) switch (scope_error_handling(type TSRMLS_CC)) { case EH_THROW: { char *message; - zend_class_entry *ce = php_http_exception_class_entry; + zend_class_entry *ce = php_http_exception_get_class_entry(); - if (0&& EG(exception_class) && instanceof_function(EG(exception_class), php_http_exception_class_entry TSRMLS_CC)) { + /* FIXME wat? */ + if (0&& EG(exception_class) && instanceof_function(EG(exception_class), ce TSRMLS_CC)) { ce = EG(exception_class); }