projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix http\Params::__toString() with RFC5988 payload; fix tests
[m6w6/ext-http]
/
php_http_message.c
diff --git
a/php_http_message.c
b/php_http_message.c
index 5a278f68c675f14cc51a24eaad7cdbb4cfce4ec4..3b19a8c8f2dc1ba94fe6812542ac04df4b4f4429 100644
(file)
--- a/
php_http_message.c
+++ b/
php_http_message.c
@@
-297,6
+297,9
@@
void php_http_message_update_headers(php_http_message_t *msg)
if (php_http_message_body_stream(msg->body)->readfilters.head) {
/* if a read stream filter is attached to the body the caller must also care for the headers */
if (php_http_message_body_stream(msg->body)->readfilters.head) {
/* if a read stream filter is attached to the body the caller must also care for the headers */
+ } else if ((h = php_http_message_header(msg, ZEND_STRL("Content-Range"), 0))) {
+ /* don't mess around with a Content-Range message */
+ zval_ptr_dtor(&h);
} else if ((size = php_http_message_body_size(msg->body))) {
MAKE_STD_ZVAL(h);
ZVAL_LONG(h, size);
} else if ((size = php_http_message_body_size(msg->body))) {
MAKE_STD_ZVAL(h);
ZVAL_LONG(h, size);
@@
-324,6
+327,7
@@
void php_http_message_update_headers(php_http_message_t *msg)
zval_ptr_dtor(&h);
if (Z_LVAL_P(h_cpy)) {
zval_ptr_dtor(&h);
if (Z_LVAL_P(h_cpy)) {
+ /* body->size == 0, so get rid of old Content-Length */
zend_hash_del(&msg->hdrs, "Content-Length", sizeof("Content-Length"));
}
zval_ptr_dtor(&h_cpy);
zend_hash_del(&msg->hdrs, "Content-Length", sizeof("Content-Length"));
}
zval_ptr_dtor(&h_cpy);
@@
-539,11
+543,11
@@
typedef struct php_http_message_object_prophandler {
php_http_message_object_prophandler_func_t write;
} php_http_message_object_prophandler_t;
php_http_message_object_prophandler_func_t write;
} php_http_message_object_prophandler_t;
-static
STATUS
php_http_message_object_add_prophandler(const char *prop_str, size_t prop_len, php_http_message_object_prophandler_func_t read, php_http_message_object_prophandler_func_t write) {
+static
ZEND_RESULT_CODE
php_http_message_object_add_prophandler(const char *prop_str, size_t prop_len, php_http_message_object_prophandler_func_t read, php_http_message_object_prophandler_func_t write) {
php_http_message_object_prophandler_t h = { read, write };
return zend_hash_add(&php_http_message_object_prophandlers, prop_str, prop_len + 1, (void *) &h, sizeof(h), NULL);
}
php_http_message_object_prophandler_t h = { read, write };
return zend_hash_add(&php_http_message_object_prophandlers, prop_str, prop_len + 1, (void *) &h, sizeof(h), NULL);
}
-static
STATUS
php_http_message_object_get_prophandler(const char *prop_str, size_t prop_len, php_http_message_object_prophandler_t **handler) {
+static
ZEND_RESULT_CODE
php_http_message_object_get_prophandler(const char *prop_str, size_t prop_len, php_http_message_object_prophandler_t **handler) {
return zend_hash_find(&php_http_message_object_prophandlers, prop_str, prop_len + 1, (void *) handler);
}
static void php_http_message_object_prophandler_get_type(php_http_message_object_t *obj, zval *return_value TSRMLS_DC) {
return zend_hash_find(&php_http_message_object_prophandlers, prop_str, prop_len + 1, (void *) handler);
}
static void php_http_message_object_prophandler_get_type(php_http_message_object_t *obj, zval *return_value TSRMLS_DC) {
@@
-749,7
+753,7
@@
void php_http_message_object_prepend(zval *this_ptr, zval *prepend, zend_bool to
}
}
}
}
-
STATUS
php_http_message_object_set_body(php_http_message_object_t *msg_obj, zval *zbody TSRMLS_DC)
+
ZEND_RESULT_CODE
php_http_message_object_set_body(php_http_message_object_t *msg_obj, zval *zbody TSRMLS_DC)
{
zval *tmp = NULL;
php_stream *s;
{
zval *tmp = NULL;
php_stream *s;
@@
-815,7
+819,7
@@
STATUS php_http_message_object_set_body(php_http_message_object_t *msg_obj, zval
return SUCCESS;
}
return SUCCESS;
}
-
STATUS
php_http_message_object_init_body_object(php_http_message_object_t *obj)
+
ZEND_RESULT_CODE
php_http_message_object_init_body_object(php_http_message_object_t *obj)
{
TSRMLS_FETCH_FROM_CTX(obj->message->ts);
{
TSRMLS_FETCH_FROM_CTX(obj->message->ts);
@@
-1673,6
+1677,16
@@
static PHP_METHOD(HttpMessage, toString)
RETURN_EMPTY_STRING();
}
RETURN_EMPTY_STRING();
}
+#ifdef ZTS
+static size_t write_to_stream(void *s, const char *str, size_t len)
+{
+ TSRMLS_FETCH();
+ return php_stream_write(s, str, len);
+}
+#else
+# define write_to_stream (php_http_pass_callback_t)_php_stream_write
+#endif
+
ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessage_toStream, 0, 0, 1)
ZEND_ARG_INFO(0, stream)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessage_toStream, 0, 0, 1)
ZEND_ARG_INFO(0, stream)
ZEND_END_ARG_INFO();
@@
-1687,7
+1701,7
@@
static PHP_METHOD(HttpMessage, toStream)
PHP_HTTP_MESSAGE_OBJECT_INIT(obj);
php_stream_from_zval(s, &zstream);
PHP_HTTP_MESSAGE_OBJECT_INIT(obj);
php_stream_from_zval(s, &zstream);
- php_http_message_to_callback(obj->message,
(php_http_pass_callback_t) _php_stream_write
, s);
+ php_http_message_to_callback(obj->message,
write_to_stream
, s);
}
}
}
}