projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Merge branch 'master' into phpng
[m6w6/ext-http]
/
php_http_message_body.c
diff --git
a/php_http_message_body.c
b/php_http_message_body.c
index b5f03c24604d424da006f1af326828edd81b11ac..4a3174a62a785c649d563ad7281874435d97e88f 100644
(file)
--- a/
php_http_message_body.c
+++ b/
php_http_message_body.c
@@
-45,14
+45,13
@@
php_http_message_body_t *php_http_message_body_init(php_http_message_body_t **bo
body->refcount = 1;
if (stream) {
body->refcount = 1;
if (stream) {
- php_stream_auto_cleanup(stream);
body->res = stream->res;
++GC_REFCOUNT(body->res);
} else {
stream = php_stream_temp_create(TEMP_STREAM_DEFAULT, 0xffff);
body->res = stream->res;
++GC_REFCOUNT(body->res);
} else {
stream = php_stream_temp_create(TEMP_STREAM_DEFAULT, 0xffff);
- php_stream_auto_cleanup(stream);
body->res = stream->res;
}
body->res = stream->res;
}
+ php_stream_auto_cleanup(stream);
if (body_ptr) {
*body_ptr = body;
if (body_ptr) {
*body_ptr = body;
@@
-114,7
+113,7
@@
const char *php_http_message_body_boundary(php_http_message_body_t *body)
if (!body->boundary) {
union { double dbl; int num[2]; } data;
if (!body->boundary) {
union { double dbl; int num[2]; } data;
- data.dbl = php_combined_lcg(
TSRMLS_C
);
+ data.dbl = php_combined_lcg();
spprintf(&body->boundary, 0, "%x.%x", data.num[0], data.num[1]);
}
return body->boundary;
spprintf(&body->boundary, 0, "%x.%x", data.num[0], data.num[1]);
}
return body->boundary;
@@
-122,24
+121,28
@@
const char *php_http_message_body_boundary(php_http_message_body_t *body)
char *php_http_message_body_etag(php_http_message_body_t *body)
{
char *php_http_message_body_etag(php_http_message_body_t *body)
{
- const php_stream_statbuf *ssb = php_http_message_body_stat(body);
+ php_http_etag_t *etag;
+ php_stream *s = php_http_message_body_stream(body);
/* real file or temp buffer ? */
/* real file or temp buffer ? */
- if (s
sb->sb.st_mtime
) {
-
char *etag
;
+ if (s
->ops != &php_stream_temp_ops && s->ops != &php_stream_memory_ops
) {
+
php_stream_stat(php_http_message_body_stream(body), &body->ssb)
;
- spprintf(&etag, 0, "%lx-%lx-%lx", ssb->sb.st_ino, ssb->sb.st_mtime, ssb->sb.st_size);
- return etag;
- } else {
- php_http_etag_t *etag = php_http_etag_init(PHP_HTTP_G->env.etag_mode);
+ if (body->ssb.sb.st_mtime) {
+ char *etag;
- if (etag) {
- php_http_message_body_to_callback(body, (php_http_pass_callback_t) php_http_etag_update, etag, 0, 0);
- return php_http_etag_finish(etag);
- } else {
- return NULL;
+ spprintf(&etag, 0, "%lx-%lx-%lx", body->ssb.sb.st_ino, body->ssb.sb.st_mtime, body->ssb.sb.st_size);
+ return etag;
}
}
}
}
+
+ /* content based */
+ if ((etag = php_http_etag_init(PHP_HTTP_G->env.etag_mode))) {
+ php_http_message_body_to_callback(body, (php_http_pass_callback_t) php_http_etag_update, etag, 0, 0);
+ return php_http_etag_finish(etag);
+ }
+
+ return NULL;
}
zend_string *php_http_message_body_to_string(php_http_message_body_t *body, off_t offset, size_t forlen)
}
zend_string *php_http_message_body_to_string(php_http_message_body_t *body, off_t offset, size_t forlen)
@@
-213,7
+216,7
@@
size_t php_http_message_body_append(php_http_message_body_t *body, const char *b
written = php_stream_write(s, buf, len);
if (written != len) {
written = php_stream_write(s, buf, len);
if (written != len) {
- php_error_docref(NULL
TSRMLS_CC
, E_WARNING, "Failed to append %zu bytes to body; wrote %zu", len, written);
+ php_error_docref(NULL, E_WARNING, "Failed to append %zu bytes to body; wrote %zu", len, written);
}
return len;
}
return len;
@@
-261,9
+264,9
@@
void php_http_message_body_add_part(php_http_message_body_t *body, php_http_mess
ZEND_RESULT_CODE php_http_message_body_add_form_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len)
{
ZEND_RESULT_CODE php_http_message_body_add_form_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len)
{
- zend_string *safe_name;
+ zend_string *safe_name
= zend_string_init(name, strlen(name), 0)
;
- safe_name = php_addslashes(
estrdup(name), strlen(name)
, 1);
+ safe_name = php_addslashes(
safe_name
, 1);
BOUNDARY_OPEN(body);
php_http_message_body_appendf(
BOUNDARY_OPEN(body);
php_http_message_body_appendf(
@@
-283,9
+286,9
@@
ZEND_RESULT_CODE php_http_message_body_add_form_file(php_http_message_body_t *bo
{
size_t path_len = strlen(path);
char *path_dup = estrndup(path, path_len);
{
size_t path_len = strlen(path);
char *path_dup = estrndup(path, path_len);
- zend_string *
safe_name, *base_name
;
+ zend_string *
base_name, *safe_name = zend_string_init(name, strlen(name), 0)
;
- safe_name = php_addslashes(
estrdup(name), strlen(name)
, 1);
+ safe_name = php_addslashes(
safe_name
, 1);
base_name = php_basename(path_dup, path_len, NULL, 0);
BOUNDARY_OPEN(body);
base_name = php_basename(path_dup, path_len, NULL, 0);
BOUNDARY_OPEN(body);
@@
-340,7
+343,7
@@
static ZEND_RESULT_CODE add_recursive_fields(php_http_message_body_t *body, cons
if (!ZEND_HASH_GET_APPLY_COUNT(fields)) {
ZEND_HASH_INC_APPLY_COUNT(fields);
if (!ZEND_HASH_GET_APPLY_COUNT(fields)) {
ZEND_HASH_INC_APPLY_COUNT(fields);
- ZEND_HASH_FOREACH_KEY_VAL(fields, key.h, key.key, val)
+ ZEND_HASH_FOREACH_KEY_VAL
_IND
(fields, key.h, key.key, val)
{
char *str = format_key(&key, name);
{
char *str = format_key(&key, name);
@@
-378,7
+381,7
@@
static ZEND_RESULT_CODE add_recursive_files(php_http_message_body_t *body, const
if (!ZEND_HASH_GET_APPLY_COUNT(files)) {
ZEND_HASH_INC_APPLY_COUNT(files);
if (!ZEND_HASH_GET_APPLY_COUNT(files)) {
ZEND_HASH_INC_APPLY_COUNT(files);
- ZEND_HASH_FOREACH_KEY_VAL(files, key.h, key.key, val)
+ ZEND_HASH_FOREACH_KEY_VAL
_IND
(files, key.h, key.key, val)
{
if (Z_TYPE_P(val) == IS_ARRAY || Z_TYPE_P(val) == IS_OBJECT) {
char *str = format_key(&key, name);
{
if (Z_TYPE_P(val) == IS_ARRAY || Z_TYPE_P(val) == IS_OBJECT) {
char *str = format_key(&key, name);
@@
-555,7
+558,7
@@
php_http_message_body_object_t *php_http_message_body_object_new_ex(zend_class_e
{
php_http_message_body_object_t *o;
{
php_http_message_body_object_t *o;
- o = ecalloc(1, sizeof(
php_http_message_body_object_t) + (ce->default_properties_count - 1) * sizeof(zval
));
+ o = ecalloc(1, sizeof(
*o) + zend_object_properties_size(ce
));
zend_object_std_init(&o->zo, php_http_message_body_class_entry);
object_properties_init(&o->zo, ce);
zend_object_std_init(&o->zo, php_http_message_body_class_entry);
object_properties_init(&o->zo, ce);
@@
-585,7
+588,7
@@
void php_http_message_body_object_free(zend_object *object)
php_http_message_body_object_t *obj = PHP_HTTP_OBJ(object, NULL);
php_http_message_body_free(&obj->body);
php_http_message_body_object_t *obj = PHP_HTTP_OBJ(object, NULL);
php_http_message_body_free(&obj->body);
- zend_object_std_dtor(object
TSRMLS_CC
);
+ zend_object_std_dtor(object);
}
#define PHP_HTTP_MESSAGE_BODY_OBJECT_INIT(obj) \
}
#define PHP_HTTP_MESSAGE_BODY_OBJECT_INIT(obj) \
@@
-814,7
+817,7
@@
PHP_METHOD(HttpMessageBody, stat)
char *field_str = NULL;
size_t field_len = 0;
char *field_str = NULL;
size_t field_len = 0;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS()
TSRMLS_CC
, "|s", &field_str, &field_len)) {
+ if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS(), "|s", &field_str, &field_len)) {
php_http_message_body_object_t *obj = PHP_HTTP_OBJ(NULL, getThis());
const php_stream_statbuf *sb;
php_http_message_body_object_t *obj = PHP_HTTP_OBJ(NULL, getThis());
const php_stream_statbuf *sb;
@@
-882,8
+885,9
@@
PHP_MINIT_FUNCTION(http_message_body)
php_http_message_body_class_entry = zend_register_internal_class(&ce);
php_http_message_body_class_entry->create_object = php_http_message_body_object_new;
memcpy(&php_http_message_body_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
php_http_message_body_class_entry = zend_register_internal_class(&ce);
php_http_message_body_class_entry->create_object = php_http_message_body_object_new;
memcpy(&php_http_message_body_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
+ php_http_message_body_object_handlers.offset = XtOffsetOf(php_http_message_body_object_t, zo);
php_http_message_body_object_handlers.clone_obj = php_http_message_body_object_clone;
php_http_message_body_object_handlers.clone_obj = php_http_message_body_object_clone;
- php_http_message_body_object_handlers.
dtor
_obj = php_http_message_body_object_free;
+ php_http_message_body_object_handlers.
free
_obj = php_http_message_body_object_free;
zend_class_implements(php_http_message_body_class_entry, 1, zend_ce_serializable);
return SUCCESS;
zend_class_implements(php_http_message_body_class_entry, 1, zend_ce_serializable);
return SUCCESS;