X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_std_defs.h;h=f9485e57013a935c7f7345a53894d9a26277a773;hb=b3fc227f0180cc93c521ef52bee7e4faa71c9a4c;hp=ce42260c357a0eae495dea035be0739fb08e113f;hpb=bb1f32fd5d06b9b9ace6517c177b0fe58c9ff57c;p=m6w6%2Fext-http diff --git a/php_http_std_defs.h b/php_http_std_defs.h index ce42260..f9485e5 100644 --- a/php_http_std_defs.h +++ b/php_http_std_defs.h @@ -1,16 +1,13 @@ /* - +----------------------------------------------------------------------+ - | PECL :: http | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, that | - | is bundled with this package in the file LICENSE, and is available | - | through the world-wide-web at http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Copyright (c) 2004-2005 Michael Wallner | - +----------------------------------------------------------------------+ + +--------------------------------------------------------------------+ + | PECL :: http | + +--------------------------------------------------------------------+ + | Redistribution and use in source and binary forms, with or without | + | modification, are permitted provided that the conditions mentioned | + | in the accompanying LICENSE file are met. | + +--------------------------------------------------------------------+ + | Copyright (c) 2004-2005, Michael Wallner | + +--------------------------------------------------------------------+ */ /* $Id$ */ @@ -108,7 +105,7 @@ typedef int STATUS; #define HTTP_URI_ARGSEP HTTP_URL_ARGSEP /* send buffer size */ -#define HTTP_SENDBUF_SIZE 2097152 +#define HTTP_SENDBUF_SIZE 40960 /* CURL buffer size */ #define HTTP_CURLBUF_SIZE 16384 @@ -177,7 +174,7 @@ typedef int STATUS; } else { \ add_assoc_zval(dst, key, *data); \ } \ - zval_add_ref(data); \ + ZVAL_ADDREF(*data); \ key = NULL; \ } \ } \ @@ -195,7 +192,7 @@ typedef int STATUS; { \ zend_class_entry ce; \ INIT_CLASS_ENTRY(ce, #classname, name## _fe); \ - ce.create_object = name## _new; \ + ce.create_object = _ ##name## _new; \ name## _ce = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); \ name## _ce->ce_flags |= flags; \ memcpy(& name## _handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); \ @@ -222,7 +219,7 @@ typedef int STATUS; # define getObject(t, o) getObjectEx(t, o, getThis()) # define getObjectEx(t, o, v) t * o = ((t *) zend_object_store_get_object(v TSRMLS_CC)) -# define putObject(t, o) zend_objects_store_put(o, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) t## _free, NULL TSRMLS_CC); +# define putObject(t, o) zend_objects_store_put(o, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) _ ##t## _free, NULL TSRMLS_CC); # define OBJ_PROP(o) (o)->zo.properties # define DCL_STATIC_PROP(a, t, n, v) zend_declare_property_ ##t(ce, (#n), sizeof(#n)-1, (v), (ZEND_ACC_ ##a | ZEND_ACC_STATIC) TSRMLS_CC) @@ -267,6 +264,18 @@ typedef int STATUS; } \ } +/* + * the property *MUST* be updated after SEP_PROP() + */ +# define SEP_PROP(zpp) \ + { \ + zval **op = zpp; \ + SEPARATE_ZVAL_IF_NOT_REF(zpp); \ + if (op != zpp) { \ + zval_ptr_dtor(op); \ + } \ + } + # define SET_EH_THROW() SET_EH_THROW_EX(zend_exception_get_default()) # define SET_EH_THROW_HTTP() SET_EH_THROW_EX(http_exception_get_default()) # define SET_EH_THROW_EX(ex) php_set_error_handling(EH_THROW, ex TSRMLS_CC) @@ -322,6 +331,12 @@ typedef int STATUS; #ifdef HTTP_HAVE_CURL # ifdef ZEND_ENGINE_2 # define HTTP_DECLARE_ARG_PASS_INFO() \ + static \ + ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_2, 0) \ + ZEND_ARG_PASS_INFO(0) \ + ZEND_ARG_PASS_INFO(1) \ + ZEND_END_ARG_INFO(); \ + \ static \ ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_3, 0) \ ZEND_ARG_PASS_INFO(0) \ @@ -348,12 +363,23 @@ typedef int STATUS; # else # define HTTP_DECLARE_ARG_PASS_INFO() \ + static unsigned char http_arg_pass_ref_2[] = {2, BYREF_NONE, BYREF_FORCE}; \ static unsigned char http_arg_pass_ref_3[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; \ static unsigned char http_arg_pass_ref_4[] = {4, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; \ static unsigned char http_arg_pass_ref_5[] = {5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; # endif /* ZEND_ENGINE_2 */ #else -# define HTTP_DECLARE_ARG_PASS_INFO() +# ifdef ZEND_ENGINE_2 +# define HTTP_DECLARE_ARG_PASS_INFO() \ + static \ + ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_2, 0) \ + ZEND_ARG_PASS_INFO(0) \ + ZEND_ARG_PASS_INFO(1) \ + ZEND_END_ARG_INFO(); +# else +# define HTTP_DECLARE_ARG_PASS_INFO() \ + static unsigned char http_arg_pass_ref_2[] = {2, BYREF_NONE, BYREF_FORCE}; +# endif /* ZEND_ENGINE_2 */ #endif /* HTTP_HAVE_CURL */ @@ -399,6 +425,35 @@ typedef int STATUS; #define RETURN_ZVAL(zv, copy, dtor) { RETVAL_ZVAL(zv, copy, dtor); return; } #endif +#define PHP_MINIT_CALL(func) PHP_MINIT(func)(INIT_FUNC_ARGS_PASSTHRU) +#define PHP_RINIT_CALL(func) PHP_RINIT(func)(INIT_FUNC_ARGS_PASSTHRU) +#define PHP_MSHUTDOWN_CALL(func) PHP_MSHUTDOWN(func)(SHUTDOWN_FUNC_ARGS_PASSTHRU) +#define PHP_RSHUTDOWN_CALL(func) PHP_RSHUTDOWN(func)(SHUTDOWN_FUNC_ARGS_PASSTHRU) + +#define Z_OBJ_DELREF(z) \ + if (Z_OBJ_HT(z)->del_ref) { \ + Z_OBJ_HT(z)->del_ref(&(z) TSRMLS_CC); \ + } +#define Z_OBJ_ADDREF(z) \ + if (Z_OBJ_HT(z)->add_ref) { \ + Z_OBJ_HT(z)->add_ref(&(z) TSRMLS_CC); \ + } +#define Z_OBJ_DELREF_P(z) \ + if (Z_OBJ_HT_P(z)->del_ref) { \ + Z_OBJ_HT_P(z)->del_ref((z) TSRMLS_CC); \ + } +#define Z_OBJ_ADDREF_P(z) \ + if (Z_OBJ_HT_P(z)->add_ref) { \ + Z_OBJ_HT_P(z)->add_ref((z) TSRMLS_CC); \ + } +#define Z_OBJ_DELREF_PP(z) \ + if (Z_OBJ_HT_PP(z)->del_ref) { \ + Z_OBJ_HT_PP(z)->del_ref(*(z) TSRMLS_CC); \ + } +#define Z_OBJ_ADDREF_PP(z) \ + if (Z_OBJ_HT_PP(z)->add_ref) { \ + Z_OBJ_HT_PP(z)->add_ref(*(z) TSRMLS_CC); \ + } #endif /* PHP_HTTP_STD_DEFS_H */