diff --git a/configure.ac b/configure.ac
index f48f1e8de90e..e2a4c295a32d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1650,7 +1650,6 @@ PHP_ADD_SOURCES([main], m4_normalize([
main.c
network.c
output.c
- php_content_types.c
php_ini_builder.c
php_ini.c
php_glob.c
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 1fbb9e524150..6dc28ccb3391 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -46,7 +46,6 @@
#include "php_globals.h"
#include "rfc1867.h"
-#include "php_content_types.h"
#include "SAPI.h"
#include "php_unicode.h"
#include "TSRM.h"
@@ -208,14 +207,6 @@ zend_module_entry mbstring_module_entry = {
};
/* }}} */
-/* {{{ static sapi_post_entry php_post_entries[] */
-static const sapi_post_entry php_post_entries[] = {
- { DEFAULT_POST_CONTENT_TYPE, sizeof(DEFAULT_POST_CONTENT_TYPE)-1, sapi_read_standard_form_data, php_std_post_handler },
- { MULTIPART_CONTENT_TYPE, sizeof(MULTIPART_CONTENT_TYPE)-1, NULL, rfc1867_post_handler },
- { NULL, 0, NULL, NULL }
-};
-/* }}} */
-
#ifdef COMPILE_DL_MBSTRING
#ifdef ZTS
ZEND_TSRMLS_CACHE_DEFINE()
diff --git a/main/SAPI.c b/main/SAPI.c
index 51997c041760..08c10b90598d 100644
--- a/main/SAPI.c
+++ b/main/SAPI.c
@@ -33,8 +33,6 @@
#include "rfc1867.h"
-#include "php_content_types.h"
-
#ifdef ZTS
SAPI_API int sapi_globals_id;
SAPI_API size_t sapi_globals_offset;
@@ -51,7 +49,7 @@ static void sapi_globals_ctor(sapi_globals_struct *sapi_globals)
{
memset(sapi_globals, 0, sizeof(*sapi_globals));
zend_hash_init(&sapi_globals->known_post_content_types, 8, NULL, _type_dtor, 1);
- php_setup_sapi_content_types();
+ sapi_register_post_entries(php_post_entries);
}
static void sapi_globals_dtor(sapi_globals_struct *sapi_globals)
@@ -177,13 +175,6 @@ SAPI_API void sapi_read_post_data(void)
} else {
/* fallback */
SG(request_info).post_entry = NULL;
- if (UNEXPECTED(!sapi_module.default_post_reader)) {
- /* this should not happen as there should always be a default_post_reader */
- SG(request_info).content_type_dup = NULL;
- sapi_module.sapi_error(E_WARNING, "Unsupported content type: '%s'", content_type);
- efree(content_type);
- return;
- }
}
if (oldchar) {
*(p-1) = oldchar;
@@ -196,8 +187,11 @@ SAPI_API void sapi_read_post_data(void)
post_reader_func();
}
- if(sapi_module.default_post_reader) {
- sapi_module.default_post_reader();
+ if (!strcmp(SG(request_info).request_method, "POST")) {
+ if (NULL == SG(request_info).post_entry) {
+ /* no post handler registered, so we just swallow the data */
+ sapi_read_standard_form_data();
+ }
}
}
@@ -918,6 +912,13 @@ SAPI_API zend_result sapi_send_headers(void)
return ret;
}
+/* {{{ php_post_entries[] */
+const sapi_post_entry php_post_entries[] = {
+ { DEFAULT_POST_CONTENT_TYPE, sizeof(DEFAULT_POST_CONTENT_TYPE)-1, sapi_read_standard_form_data, php_std_post_handler },
+ { MULTIPART_CONTENT_TYPE, sizeof(MULTIPART_CONTENT_TYPE)-1, NULL, rfc1867_post_handler },
+ { NULL, 0, NULL, NULL }
+};
+/* }}} */
SAPI_API zend_result sapi_register_post_entries(const sapi_post_entry *post_entries)
{
@@ -956,17 +957,6 @@ SAPI_API void sapi_unregister_post_entry(const sapi_post_entry *post_entry)
post_entry->content_type_len);
}
-
-SAPI_API zend_result sapi_register_default_post_reader(void (*default_post_reader)(void))
-{
- if (SG(sapi_started) && EG(current_execute_data)) {
- return FAILURE;
- }
- sapi_module.default_post_reader = default_post_reader;
- return SUCCESS;
-}
-
-
SAPI_API zend_result sapi_register_treat_data(void (*treat_data)(int arg, char *str, zval *destArray))
{
if (SG(sapi_started) && EG(current_execute_data)) {
diff --git a/main/SAPI.h b/main/SAPI.h
index 3d7f662b30f4..08088fcc1bc8 100644
--- a/main/SAPI.h
+++ b/main/SAPI.h
@@ -211,7 +211,6 @@ SAPI_API size_t sapi_read_post_block(char *buffer, size_t buflen);
SAPI_API zend_result sapi_register_post_entries(const sapi_post_entry *post_entry);
SAPI_API zend_result sapi_register_post_entry(const sapi_post_entry *post_entry);
SAPI_API void sapi_unregister_post_entry(const sapi_post_entry *post_entry);
-SAPI_API zend_result sapi_register_default_post_reader(void (*default_post_reader)(void));
SAPI_API zend_result sapi_register_treat_data(void (*treat_data)(int arg, char *str, zval *destArray));
SAPI_API zend_result sapi_register_input_filter(unsigned int (*input_filter)(int arg, const char *var, char **val, size_t val_len, size_t *new_val_len), unsigned int (*input_filter_init)(void));
@@ -257,7 +256,6 @@ struct _sapi_module_struct {
char *php_ini_path_override;
- void (*default_post_reader)(void);
void (*treat_data)(int arg, char *str, zval *destArray);
char *executable_location;
@@ -283,6 +281,11 @@ struct _sapi_post_entry {
void (*post_handler)(char *content_type_dup, void *arg);
};
+BEGIN_EXTERN_C()
+/* Default POST entries to switch back to when overrode */
+extern SAPI_API const sapi_post_entry php_post_entries[];
+END_EXTERN_C()
+
/* header_handler() constants */
#define SAPI_HEADER_ADD (1<<0)
@@ -301,16 +304,17 @@ struct _sapi_post_entry {
#define SAPI_TREAT_DATA_FUNC(treat_data) void treat_data(int arg, char *str, zval* destArray)
#define SAPI_INPUT_FILTER_FUNC(input_filter) unsigned int input_filter(int arg, const char *var, char **val, size_t val_len, size_t *new_val_len)
+#define DEFAULT_POST_CONTENT_TYPE "application/x-www-form-urlencoded"
+
BEGIN_EXTERN_C()
+SAPI_API SAPI_POST_HANDLER_FUNC(php_std_post_handler);
SAPI_API SAPI_POST_READER_FUNC(sapi_read_standard_form_data);
-SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader);
SAPI_API SAPI_TREAT_DATA_FUNC(php_default_treat_data);
SAPI_API SAPI_INPUT_FILTER_FUNC(php_default_input_filter);
END_EXTERN_C()
#define STANDARD_SAPI_MODULE_PROPERTIES \
NULL, /* php_ini_path_override */ \
- NULL, /* default_post_reader */ \
NULL, /* treat_data */ \
NULL, /* executable_location */ \
0, /* php_ini_ignore */ \
diff --git a/main/main.c b/main/main.c
index aed44e60c28e..6a3c5d332b4c 100644
--- a/main/main.c
+++ b/main/main.c
@@ -79,7 +79,6 @@
#include "zend_system_id.h"
#include "zend_smart_string.h"
-#include "php_content_types.h"
#include "php_ticks.h"
#include "php_streams.h"
#include "php_open_temporary_file.h"
@@ -2275,7 +2274,9 @@ zend_result php_module_startup(sapi_module_struct *sf, zend_module_entry *additi
zuv.html_errors = 1;
php_startup_auto_globals();
zend_set_utility_values(&zuv);
- php_startup_sapi_content_types();
+
+ sapi_register_treat_data(php_default_treat_data);
+ sapi_register_input_filter(php_default_input_filter, NULL);
/* Begin to fingerprint the process state */
zend_startup_system_id();
diff --git a/main/php_content_types.c b/main/php_content_types.c
deleted file mode 100644
index c727d0ed3314..000000000000
--- a/main/php_content_types.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | Copyright © The PHP Group and Contributors. |
- +----------------------------------------------------------------------+
- | This source file is subject to the Modified BSD License that is |
- | bundled with this package in the file LICENSE, and is available |
- | through the World Wide Web at . |
- | |
- | SPDX-License-Identifier: BSD-3-Clause |
- +----------------------------------------------------------------------+
-*/
-
-#include "php.h"
-#include "SAPI.h"
-#include "rfc1867.h"
-
-#include "php_content_types.h"
-
-/* {{{ php_post_entries[] */
-static const sapi_post_entry php_post_entries[] = {
- { DEFAULT_POST_CONTENT_TYPE, sizeof(DEFAULT_POST_CONTENT_TYPE)-1, sapi_read_standard_form_data, php_std_post_handler },
- { MULTIPART_CONTENT_TYPE, sizeof(MULTIPART_CONTENT_TYPE)-1, NULL, rfc1867_post_handler },
- { NULL, 0, NULL, NULL }
-};
-/* }}} */
-
-/* {{{ SAPI_POST_READER_FUNC */
-SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader)
-{
- if (!strcmp(SG(request_info).request_method, "POST")) {
- if (NULL == SG(request_info).post_entry) {
- /* no post handler registered, so we just swallow the data */
- sapi_read_standard_form_data();
- }
- }
-}
-/* }}} */
-
-/* {{{ php_startup_sapi_content_types */
-int php_startup_sapi_content_types(void)
-{
- sapi_register_default_post_reader(php_default_post_reader);
- sapi_register_treat_data(php_default_treat_data);
- sapi_register_input_filter(php_default_input_filter, NULL);
- return SUCCESS;
-}
-/* }}} */
-
-/* {{{ php_setup_sapi_content_types */
-int php_setup_sapi_content_types(void)
-{
- sapi_register_post_entries(php_post_entries);
-
- return SUCCESS;
-}
-/* }}} */
diff --git a/main/php_content_types.h b/main/php_content_types.h
deleted file mode 100644
index e734bb1963cd..000000000000
--- a/main/php_content_types.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | Copyright © The PHP Group and Contributors. |
- +----------------------------------------------------------------------+
- | This source file is subject to the Modified BSD License that is |
- | bundled with this package in the file LICENSE, and is available |
- | through the World Wide Web at . |
- | |
- | SPDX-License-Identifier: BSD-3-Clause |
- +----------------------------------------------------------------------+
-*/
-
-#ifndef PHP_CONTENT_TYPES_H
-#define PHP_CONTENT_TYPES_H
-
-#define DEFAULT_POST_CONTENT_TYPE "application/x-www-form-urlencoded"
-
-SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader);
-SAPI_API SAPI_POST_HANDLER_FUNC(php_std_post_handler);
-int php_startup_sapi_content_types(void);
-int php_setup_sapi_content_types(void);
-
-#endif /* PHP_CONTENT_TYPES_H */
diff --git a/main/php_variables.c b/main/php_variables.c
index 2121bfd8b35b..e4262e59c006 100644
--- a/main/php_variables.c
+++ b/main/php_variables.c
@@ -20,7 +20,6 @@
#include "zend_smart_str.h"
#include "php_variables.h"
#include "php_globals.h"
-#include "php_content_types.h"
#include "SAPI.h"
#include "zend_globals.h"
#include "zend_exceptions.h"
diff --git a/win32/build/config.w32 b/win32/build/config.w32
index 253dab653986..991eeb33b020 100644
--- a/win32/build/config.w32
+++ b/win32/build/config.w32
@@ -288,7 +288,7 @@ ADD_FLAG("CFLAGS_BD_ZEND", "/D ZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
ADD_SOURCES("main", "main.c snprintf.c spprintf.c getopt.c fopen_wrappers.c \
php_ini_builder.c php_glob.c \
- php_scandir.c php_ini.c SAPI.c rfc1867.c php_content_types.c strlcpy.c \
+ php_scandir.c php_ini.c SAPI.c rfc1867.c strlcpy.c \
strlcat.c reentrancy.c php_variables.c php_ticks.c network.c \
php_open_temporary_file.c output.c internal_functions.c \
php_syslog.c php_odbc_utils.c safe_bcmp.c");