diff options
author | George Schlossnagle <gschlossnagle@php.net> | 2002-08-28 18:56:51 +0000 |
---|---|---|
committer | George Schlossnagle <gschlossnagle@php.net> | 2002-08-28 18:56:51 +0000 |
commit | 2bc1d055cb8046699f10bad45ea5e479b47fbf24 (patch) | |
tree | 887824e874a17776c0779ddab1a01aeb351e18ae /main/SAPI.c | |
parent | 0a105b4130638fae983664a7556bf5843c1dd10a (diff) | |
download | php-git-2bc1d055cb8046699f10bad45ea5e479b47fbf24.tar.gz |
Added wrapper functions for the majority of the apache API_EXPORT functions
as class methods for the ApacheRequest objects. broke sapi_activate
into two functions to allow for reading of headers/cookies separately
from request bodies (POST stuff). Altered some of the send_headers code
in mod_php4.c to prevent sending headers twice (since a phpResponseHandler
needs to be able to have full freedom for setting headers using the
ap_*_header* functions.
Diffstat (limited to 'main/SAPI.c')
-rw-r--r-- | main/SAPI.c | 31 |
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; } |