| modification, are permitted provided that the conditions mentioned |
| in the accompanying LICENSE file are met. |
+--------------------------------------------------------------------+
- | Copyright (c) 2004-2007, Michael Wallner <mike@php.net> |
+ | Copyright (c) 2004-2010, Michael Wallner <mike@php.net> |
+--------------------------------------------------------------------+
*/
copy_bt_args(old_exception, new_exception TSRMLS_CC);
copy_bt_args(old_exception, sub_exception TSRMLS_CC);
}
-
+#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 3
+ Z_ADDREF_P(old_exception);
+ zend_exception_set_previous(new_exception, old_exception TSRMLS_CC);
+#endif
zval_ptr_dtor(&old_exception);
return new_exception;
}
STR_FREE(body);
return FAILURE;
}
-
- if (!OG(ob_lock)) {
+
+#ifndef PHP_OUTPUT_NEWAPI
+ if (!OG(ob_lock) &&
+ !php_ob_handler_used("zlib output compression" TSRMLS_CC) && !php_ob_handler_used("ob_gzhandler" TSRMLS_CC)) {
php_end_ob_buffers(0 TSRMLS_CC);
}
+#endif
+
if ((SUCCESS == sapi_send_headers(TSRMLS_C)) && body) {
PHPWRITE(body, strlen(body));
}
if (HTTP_G->force_exit) {
zend_bailout();
} else {
+#ifdef PHP_OUTPUT_NEWAPI
+ php_output_start_devnull(TSRMLS_C);
+#else
php_ob_set_internal_handler(http_ob_blackhole, 4096, "blackhole", 0 TSRMLS_CC);
+#endif
}
return SUCCESS;
}
return SUCCESS;
} else if (sapi_module.read_post && !HTTP_G->read_post_data) {
- char buf[4096];
+ char *buf = emalloc(4096);
int len;
HTTP_G->read_post_data = 1;
- while (0 < (len = sapi_module.read_post(buf, sizeof(buf) TSRMLS_CC))) {
+ while (0 < (len = sapi_module.read_post(buf, 4096 TSRMLS_CC))) {
+ SG(read_post_bytes) += len;
*body = erealloc(*body, *length + len + 1);
memcpy(*body + *length, buf, len);
*length += len;
(*body)[*length] = '\0';
+ if (len < 4096) {
+ break;
+ }
}
+ efree(buf);
/* check for error */
if (len < 0) {
HTTP_G->read_post_data = 1;
if ((s = php_stream_temp_new())) {
- char buf[4096];
+ char *buf = emalloc(4096);
int len;
- while (0 < (len = sapi_module.read_post(buf, sizeof(buf) TSRMLS_CC))) {
+ while (0 < (len = sapi_module.read_post(buf, 4096 TSRMLS_CC))) {
+ SG(read_post_bytes) += len;
php_stream_write(s, buf, len);
+ if (len < 4096) {
+ break;
+ }
}
+ efree(buf);
if (len < 0) {
php_stream_close(s);
goto failure;
break;
- case '=':
- if (key) {
- keylen = c - key;
- st = ST_VALUE;
- } else {
- goto failure;
- }
- break;
-
case ' ':
if (key) {
keylen = c - key;
}
break;
+ case ':':
+ if (!(flags & HTTP_PARAMS_COLON_SEPARATOR)) {
+ goto not_separator;
+ }
+ if (key) {
+ keylen = c - key;
+ st = ST_VALUE;
+ } else {
+ goto failure;
+ }
+ break;
+
+ case '=':
+ if (flags & HTTP_PARAMS_COLON_SEPARATOR) {
+ goto not_separator;
+ }
+ if (key) {
+ keylen = c - key;
+ st = ST_VALUE;
+ } else {
+ goto failure;
+ }
+ break;
+
default:
+ not_separator:
if (!key) {
key = c;
}
/* }}} */
/* {{{ array_join */
-int apply_array_append_func(void *pDest, int num_args, va_list args, zend_hash_key *hash_key)
+int apply_array_append_func(void *pDest HTTP_ZAPI_HASH_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
{
int flags;
char *key = NULL;
ZVAL_ADDREF(*value);
if (data) {
- if (Z_TYPE_PP(data) != IS_ARRAY) {
- convert_to_array(*data);
- }
- add_next_index_zval(*data, *value);
+ add_next_index_zval(http_zset(IS_ARRAY, *data), *value);
} else if (key) {
zend_hash_add(dst, key, hash_key->nKeyLength, value, sizeof(zval *), NULL);
} else {
return ZEND_HASH_APPLY_KEEP;
}
-int apply_array_merge_func(void *pDest, int num_args, va_list args, zend_hash_key *hash_key)
+int apply_array_merge_func(void *pDest HTTP_ZAPI_HASH_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
{
int flags;
char *key = NULL;