/* defined in browscap.c */
PHP_INI_MH(OnChangeBrowscap);
+/* {{{ PHP_INI_MH
+ */
+static PHP_INI_MH(OnChangeAlwaysPopulateRawPostData)
+{
+ signed char *p;
+#ifndef ZTS
+ char *base = (char *) mh_arg2;
+#else
+ char *base;
+
+ base = (char *) ts_resource(*((int *) mh_arg2));
+#endif
+
+ p = (signed char *) (base+(size_t) mh_arg1);
+
+ *p = zend_atol(new_value, new_value_length);
+ if (new_value_length == 2 && strcasecmp("on", new_value) == 0) {
+ *p = (signed char) 1;
+ }
+ else if (new_value_length == 3 && strcasecmp("yes", new_value) == 0) {
+ *p = (signed char) 1;
+ }
+ else if (new_value_length == 4 && strcasecmp("true", new_value) == 0) {
+ *p = (signed char) 1;
+ }
+ else {
+ *p = (signed char) atoi(new_value);
+ }
+ return SUCCESS;
+}
+/* }}} */
/* Need to be read from the environment (?):
* PHP_AUTO_PREPEND_FILE
STD_PHP_INI_BOOLEAN("allow_url_fopen", "1", PHP_INI_SYSTEM, OnUpdateBool, allow_url_fopen, php_core_globals, core_globals)
STD_PHP_INI_BOOLEAN("allow_url_include", "0", PHP_INI_SYSTEM, OnUpdateBool, allow_url_include, php_core_globals, core_globals)
STD_PHP_INI_BOOLEAN("enable_post_data_reading", "1", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, enable_post_data_reading, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("always_populate_raw_post_data","0",PHP_INI_SYSTEM|PHP_INI_PERDIR, OnChangeAlwaysPopulateRawPostData, always_populate_raw_post_data, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("realpath_cache_size", "16K", PHP_INI_SYSTEM, OnUpdateLong, realpath_cache_size_limit, virtual_cwd_globals, cwd_globals)
STD_PHP_INI_ENTRY("realpath_cache_ttl", "120", PHP_INI_SYSTEM, OnUpdateLong, realpath_cache_ttl, virtual_cwd_globals, cwd_globals)
};
/* }}} */
+static zend_bool populate_raw_post_data(TSRMLS_D)
+{
+ if (!SG(request_info).request_body) {
+ return (zend_bool) 0;
+ }
+
+ if (!PG(always_populate_raw_post_data)) {
+ return (zend_bool) !SG(request_info).post_entry;
+ }
+
+ return (zend_bool) (PG(always_populate_raw_post_data) > 0);
+}
+
/* {{{ SAPI_POST_READER_FUNC
*/
SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader)
/* no post handler registered, so we just swallow the data */
sapi_read_standard_form_data(TSRMLS_C);
}
+
+ if (populate_raw_post_data(TSRMLS_C)) {
+ size_t length;
+ char *data = NULL;
+
+ php_stream_rewind(SG(request_info).request_body);
+ length = php_stream_copy_to_mem(SG(request_info).request_body, &data, PHP_STREAM_COPY_ALL, 0);
+ php_stream_rewind(SG(request_info).request_body);
+
+ SET_VAR_STRINGL("HTTP_RAW_POST_DATA", data, length);
+ }
}
}
/* }}} */