diff options
author | Jani Taskinen <jani@php.net> | 2010-03-11 10:24:29 +0000 |
---|---|---|
committer | Jani Taskinen <jani@php.net> | 2010-03-11 10:24:29 +0000 |
commit | 06f072cb5e4e3582e20b8762141eccbc4dce85fa (patch) | |
tree | 511382440db96edad3a2627ce361113e29d672ab /sapi/apache/php_apache.c | |
parent | f60946eb5430cd11daa9f88503dc9b1a9b7bd634 (diff) | |
download | php-git-06f072cb5e4e3582e20b8762141eccbc4dce85fa.tar.gz |
MFH: Improved / fixed output buffering (Michael Wallner)
Diffstat (limited to 'sapi/apache/php_apache.c')
-rw-r--r-- | sapi/apache/php_apache.c | 79 |
1 files changed, 38 insertions, 41 deletions
diff --git a/sapi/apache/php_apache.c b/sapi/apache/php_apache.c index 8faa6f34f0..e2055ccb48 100644 --- a/sapi/apache/php_apache.c +++ b/sapi/apache/php_apache.c @@ -93,8 +93,6 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_apache_reset_timeout, 0) ZEND_END_ARG_INFO() - - const zend_function_entry apache_functions[] = { PHP_FE(virtual, arginfo_apache_virtual) PHP_FE(apache_request_headers, arginfo_apache_request_headers) @@ -110,7 +108,6 @@ const zend_function_entry apache_functions[] = { {NULL, NULL, NULL} }; - PHP_INI_BEGIN() STD_PHP_INI_ENTRY("xbithack", "0", PHP_INI_ALL, OnUpdateLong, xbithack, php_apache_info_struct, php_apache_info) STD_PHP_INI_ENTRY("engine", "1", PHP_INI_ALL, OnUpdateLong, engine, php_apache_info_struct, php_apache_info) @@ -118,14 +115,11 @@ PHP_INI_BEGIN() STD_PHP_INI_ENTRY("child_terminate", "0", PHP_INI_ALL, OnUpdateLong, terminate_child, php_apache_info_struct, php_apache_info) PHP_INI_END() - - static void php_apache_globals_ctor(php_apache_info_struct *apache_globals TSRMLS_DC) { apache_globals->in_request = 0; } - static PHP_MINIT_FUNCTION(apache) { #ifdef ZTS @@ -137,7 +131,6 @@ static PHP_MINIT_FUNCTION(apache) return SUCCESS; } - static PHP_MSHUTDOWN_FUNCTION(apache) { UNREGISTER_INI_ENTRIES(); @@ -146,13 +139,13 @@ static PHP_MSHUTDOWN_FUNCTION(apache) zend_module_entry apache_module_entry = { STANDARD_MODULE_HEADER, - "apache", - apache_functions, - PHP_MINIT(apache), - PHP_MSHUTDOWN(apache), - NULL, - NULL, - PHP_MINFO(apache), + "apache", + apache_functions, + PHP_MINIT(apache), + PHP_MSHUTDOWN(apache), + NULL, + NULL, + PHP_MINFO(apache), NO_VERSION_YET, STANDARD_MODULE_PROPERTIES }; @@ -178,7 +171,6 @@ PHP_MINFO_FUNCTION(apache) serv = ((request_rec *) SG(server_context))->server; - php_info_print_table_start(); #ifdef PHP_WIN32 @@ -196,7 +188,7 @@ PHP_MINFO_FUNCTION(apache) if (apv && *apv) { php_info_print_table_row(2, "Apache Version", apv); - } + } #ifdef APACHE_RELEASE snprintf(output_buf, sizeof(output_buf), "%d", APACHE_RELEASE); @@ -222,7 +214,7 @@ PHP_MINFO_FUNCTION(apache) php_info_print_table_row(2, "Server Root", server_root); strcpy(modulenames, ""); - for(modp = top_module; modp; modp = modp->next) { + for (modp = top_module; modp; modp = modp->next) { strlcpy(name, modp->name, sizeof(name)); if ((p = strrchr(name, '.'))) { *p='\0'; /* Cut off ugly .c extensions on module names */ @@ -248,14 +240,14 @@ PHP_MINFO_FUNCTION(apache) r = ((request_rec *) SG(server_context)); arr = table_elts(r->subprocess_env); elts = (table_entry *)arr->elts; - + SECTION("Apache Environment"); - php_info_print_table_start(); + php_info_print_table_start(); php_info_print_table_header(2, "Variable", "Value"); for (i=0; i < arr->nelts; i++) { php_info_print_table_row(2, elts[i].key, elts[i].val); } - php_info_print_table_end(); + php_info_print_table_end(); } { @@ -263,7 +255,7 @@ PHP_MINFO_FUNCTION(apache) table_entry *env; int i; request_rec *r; - + r = ((request_rec *) SG(server_context)); SECTION("HTTP Headers Information"); php_info_print_table_start(); @@ -279,7 +271,7 @@ PHP_MINFO_FUNCTION(apache) php_info_print_table_colspan_header(2, "HTTP Response Headers"); env_arr = table_elts(r->headers_out); env = (table_entry *)env_arr->elts; - for(i = 0; i < env_arr->nelts; ++i) { + for (i = 0; i < env_arr->nelts; ++i) { if (env[i].key) { php_info_print_table_row(2, env[i].key, env[i].val); } @@ -353,34 +345,37 @@ PHP_FUNCTION(virtual) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, &filename_len) == FAILURE) { return; } - + if (!(rr = sub_req_lookup_uri (filename, ((request_rec *) SG(server_context))))) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to include '%s' - URI lookup failed", filename); - if (rr) + if (rr) { destroy_sub_req (rr); + } RETURN_FALSE; } if (rr->status != 200) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to include '%s' - error finding URI", filename); - if (rr) + if (rr) { destroy_sub_req (rr); + } RETURN_FALSE; } - php_end_ob_buffers(1 TSRMLS_CC); + php_output_end_all(TSRMLS_C); php_header(TSRMLS_C); if (run_sub_req(rr)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to include '%s' - request execution failed", filename); - if (rr) + if (rr) { destroy_sub_req (rr); + } RETURN_FALSE; } - if (rr) + if (rr) { destroy_sub_req (rr); - + } RETURN_TRUE; } /* }}} */ @@ -409,7 +404,7 @@ PHP_FUNCTION(apache_request_headers) if (add_assoc_string(return_value, tenv[i].key, (tenv[i].val==NULL) ? "" : tenv[i].val, 1)==FAILURE) { RETURN_FALSE; } - } + } } /* }}} */ @@ -446,8 +441,10 @@ PHP_FUNCTION(apache_setenv) return; } - while(top) { - if(r->prev) r = r->prev; + while (top) { + if (r->prev) { + r = r->prev; + } else break; } @@ -480,16 +477,16 @@ PHP_FUNCTION(apache_lookup_uri) add_property_string(return_value,"the_request", rr->the_request, 1); } if (rr->status_line) { - add_property_string(return_value,"status_line", (char *)rr->status_line, 1); + add_property_string(return_value,"status_line", (char *)rr->status_line, 1); } if (rr->method) { - add_property_string(return_value,"method", (char *)rr->method, 1); + add_property_string(return_value,"method", (char *)rr->method, 1); } if (rr->content_type) { add_property_string(return_value,"content_type", (char *)rr->content_type, 1); } if (rr->handler) { - add_property_string(return_value,"handler", (char *)rr->handler, 1); + add_property_string(return_value,"handler", (char *)rr->handler, 1); } if (rr->uri) { add_property_string(return_value,"uri", rr->uri, 1); @@ -519,11 +516,11 @@ PHP_FUNCTION(apache_lookup_uri) if (rr->unparsed_uri) { add_property_string(return_value,"unparsed_uri", rr->unparsed_uri, 1); } - if(rr->mtime) { + if (rr->mtime) { add_property_long(return_value,"mtime", rr->mtime); } #endif - if(rr->request_time) { + if (rr->request_time) { add_property_long(return_value,"request_time", rr->request_time); } @@ -546,7 +543,7 @@ PHP_FUNCTION(apache_exec_uri) return; } - if(!(rr = ap_sub_req_lookup_uri(filename, ((request_rec *) SG(server_context))))) { + if (!(rr = ap_sub_req_lookup_uri(filename, ((request_rec *) SG(server_context))))) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "URI lookup failed", filename); RETURN_FALSE; } @@ -576,16 +573,16 @@ PHP_FUNCTION(apache_get_modules) { int n; char *p; - + array_init(return_value); - + for (n = 0; ap_loaded_modules[n]; ++n) { char *s = (char *) ap_loaded_modules[n]->name; if ((p = strchr(s, '.'))) { add_next_index_stringl(return_value, s, (p - s), 1); } else { add_next_index_string(return_value, s, 1); - } + } } } /* }}} */ |