X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=http_message_object.c;h=c61999164749954a50e77ea1e71d2e7d95abb31f;hb=64b8eb68455c36e7e153014deaf52a6f9d2de39c;hp=f1a6705cdccea600e1ccb1473fcf9fc272a06ebb;hpb=61af9b82347d7b51261821ec1f29fc1bd6ae73b0;p=m6w6%2Fext-http diff --git a/http_message_object.c b/http_message_object.c index f1a6705..c619991 100644 --- a/http_message_object.c +++ b/http_message_object.c @@ -19,17 +19,16 @@ #ifdef HAVE_CONFIG_H # include "config.h" #endif - #include "php.h" +#ifdef ZEND_ENGINE_2 + #include "php_http.h" #include "php_http_std_defs.h" #include "php_http_message_object.h" #include "phpstr/phpstr.h" -#ifdef ZEND_ENGINE_2 - #define http_message_object_declare_default_properties() _http_message_object_declare_default_properties(TSRMLS_C) static inline void _http_message_object_declare_default_properties(TSRMLS_D); #define http_message_object_read_prop _http_message_object_read_prop @@ -38,6 +37,8 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type static void _http_message_object_write_prop(zval *object, zval *member, zval *value TSRMLS_DC); #define http_message_object_get_props _http_message_object_get_props static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC); +#define http_message_object_clone_obj _http_message_object_clone_obj +static inline zend_object_value _http_message_object_clone_obj(zval *object TSRMLS_DC); zend_class_entry *http_message_object_ce; zend_function_entry http_message_object_fe[] = { @@ -75,6 +76,7 @@ void _http_message_object_init(INIT_FUNC_ARGS) HTTP_LONG_CONSTANT("HTTP_MSG_REQUEST", HTTP_MSG_REQUEST); HTTP_LONG_CONSTANT("HTTP_MSG_RESPONSE", HTTP_MSG_RESPONSE); + http_message_object_handlers.clone_obj = http_message_object_clone_obj; http_message_object_handlers.read_property = http_message_object_read_prop; http_message_object_handlers.write_property = http_message_object_write_prop; http_message_object_handlers.get_properties = http_message_object_get_props; @@ -112,6 +114,11 @@ zend_object_value _http_message_object_new_ex(zend_class_entry *ce, http_message return ov; } +zend_object_value _http_message_object_clone(zval *this_ptr TSRMLS_DC) +{ + return http_message_object_clone_obj(this_ptr TSRMLS_CC); +} + static inline void _http_message_object_declare_default_properties(TSRMLS_D) { zend_class_entry *ce = http_message_object_ce; @@ -141,6 +148,12 @@ void _http_message_object_free(zend_object *object TSRMLS_DC) efree(o); } +static inline zend_object_value _http_message_object_clone_obj(zval *this_ptr TSRMLS_DC) +{ + getObject(http_message_object, obj); + return http_message_object_from_msg(http_message_dup(obj->message)); +} + static zval *_http_message_object_read_prop(zval *object, zval *member, int type TSRMLS_DC) { getObjectEx(http_message_object, obj, object); @@ -269,11 +282,11 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va switch (msg->type) { case HTTP_MSG_REQUEST: - msg->info.request.http_version = (float) Z_DVAL_P(value); + msg->info.request.http_version = Z_DVAL_P(value); break; case HTTP_MSG_RESPONSE: - msg->info.response.http_version = (float) Z_DVAL_P(value); + msg->info.response.http_version = Z_DVAL_P(value); break; } break;