summaryrefslogtreecommitdiff
path: root/main/SAPI.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/SAPI.c')
-rw-r--r--main/SAPI.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/main/SAPI.c b/main/SAPI.c
index fd38e7cdd5..19e2672dfe 100644
--- a/main/SAPI.c
+++ b/main/SAPI.c
@@ -278,9 +278,11 @@ SAPI_API size_t sapi_apply_default_charset(char **mimetype, size_t len TSRMLS_DC
/*
* Called from php_request_startup() for every request.
*/
-SAPI_API void sapi_activate(TSRMLS_D)
+SAPI_API void sapi_activate_headers_only(TSRMLS_D)
{
- void (*post_reader_func)(TSRMLS_D);
+ if (SG(request_info).headers_read == 1)
+ return;
+ SG(request_info).headers_read = 1;
zend_llist_init(&SG(sapi_headers).headers, sizeof(sapi_header_struct), (void (*)(void *)) sapi_free_header, 0);
SG(sapi_headers).send_default_content_type = 1;
@@ -289,8 +291,6 @@ SAPI_API void sapi_activate(TSRMLS_D)
*/
SG(sapi_headers).http_status_line = NULL;
SG(headers_sent) = 0;
- SG(read_post_bytes) = 0;
- SG(request_info).post_data = NULL;
SG(request_info).current_user = NULL;
SG(request_info).current_user_length = 0;
SG(request_info).no_headers = 0;
@@ -303,6 +303,23 @@ SAPI_API void sapi_activate(TSRMLS_D)
} else {
SG(request_info).headers_only = 0;
}
+ if (SG(server_context)) {
+ SG(request_info).cookie_data = sapi_module.read_cookies(TSRMLS_C);
+ if (sapi_module.activate) {
+ sapi_module.activate(TSRMLS_C);
+ }
+ }
+}
+
+SAPI_API void sapi_activate(TSRMLS_D)
+{
+ void (*post_reader_func)(TSRMLS_D);
+ SG(headers_sent) = 0;
+ SG(read_post_bytes) = 0;
+ SG(request_info).post_data = NULL;
+ /* It's possible to override this general case in the activate() callback, if
+ * necessary.
+ */
SG(rfc1867_uploaded_files) = NULL;
if (SG(server_context)) {
@@ -337,10 +354,7 @@ SAPI_API void sapi_activate(TSRMLS_D)
} else {
SG(request_info).content_type_dup = NULL;
}
- SG(request_info).cookie_data = sapi_module.read_cookies(TSRMLS_C);
- if (sapi_module.activate) {
- sapi_module.activate(TSRMLS_C);
- }
+ sapi_activate_headers_only(TSRMLS_C);
}
}
@@ -383,6 +397,7 @@ SAPI_API void sapi_deactivate(TSRMLS_D)
}
sapi_send_headers_free(TSRMLS_C);
SG(sapi_started) = 0;
+ SG(request_info).headers_read = 0;
}