+ if (!from->ops->copy) {
+ return NULL;
+ } else {
+ TSRMLS_FETCH_FROM_CTX(from->ts);
+
+ if (!to) {
+ to = ecalloc(1, sizeof(*to));
+ }
+
+ to->ops = from->ops;
+ if (from->rf) {
+ php_http_resource_factory_addref(from->rf);
+ to->rf = from->rf;
+ } else {
+ to->rf = php_http_resource_factory_init(NULL, to->ops->rsrc, to, NULL);
+ }
+ to->buffer = php_http_buffer_init(NULL);
+ to->parser = php_http_message_parser_init(NULL TSRMLS_CC);
+ to->message = php_http_message_init(NULL, 0 TSRMLS_CC);
+
+ TSRMLS_SET_CTX(to->ts);
+
+ return to->ops->copy(from, to);