edink Fri Jun 25 09:00:48 2004 EDT Modified files: /php-src/sapi/apache2handler sapi_apache2.c Log: MFB: Memory leak fix (patch by Joe Orton) Fixes #28113. Adapted to php5 by Magnus Määttä. http://cvs.php.net/diff.php/php-src/sapi/apache2handler/sapi_apache2.c?r1=1.39&r2=1.40&ty=u Index: php-src/sapi/apache2handler/sapi_apache2.c diff -u php-src/sapi/apache2handler/sapi_apache2.c:1.39 php-src/sapi/apache2handler/sapi_apache2.c:1.40 --- php-src/sapi/apache2handler/sapi_apache2.c:1.39 Thu Jun 17 20:36:58 2004 +++ php-src/sapi/apache2handler/sapi_apache2.c Fri Jun 25 09:00:48 2004 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sapi_apache2.c,v 1.39 2004/06/18 00:36:58 iliaa Exp $ */ +/* $Id: sapi_apache2.c,v 1.40 2004/06/25 13:00:48 edink Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -48,7 +48,7 @@ #include "http_log.h" #include "http_main.h" #include "util_script.h" -#include "http_core.h" +#include "http_core.h" #include "ap_mpm.h" #include "php_apache.h" @@ -58,7 +58,7 @@ * file does not use the system call shutdown, it is safe to #undef it.K */ #undef shutdown - + #define PHP_MAGIC_TYPE "application/x-httpd-php" #define PHP_SOURCE_MAGIC_TYPE "application/x-httpd-php-source" #define PHP_SCRIPT "php5-script" @@ -69,31 +69,16 @@ static int php_apache_sapi_ub_write(const char *str, uint str_length TSRMLS_DC) { - apr_bucket *bucket; - apr_bucket_brigade *brigade; request_rec *r; php_struct *ctx; - char *copy_str; - - if (str_length == 0) { - return 0; - } ctx = SG(server_context); r = ctx->r; - brigade = ctx->brigade; - - copy_str = apr_pmemdup(r->pool, str, str_length); - bucket = apr_bucket_pool_create(copy_str, str_length, r->pool, r->connection->bucket_alloc); - - APR_BRIGADE_INSERT_TAIL(brigade, bucket); - if (ap_pass_brigade(r->output_filters, brigade) != APR_SUCCESS || r->connection->aborted) { + if (ap_rwrite(str, str_length, r) < 0) { php_handle_aborted_connection(); } - /* Ensure this brigade is empty for the next usage. */ - apr_brigade_cleanup(brigade); - + return str_length; /* we always consume all the data passed to us. */ } @@ -241,8 +226,6 @@ php_apache_sapi_flush(void *server_context) { php_struct *ctx; - apr_bucket_brigade *brigade; - apr_bucket *bucket; request_rec *r; TSRMLS_FETCH(); @@ -255,20 +238,15 @@ } r = ctx->r; - brigade = ctx->brigade; sapi_send_headers(TSRMLS_C); r->status = SG(sapi_headers).http_response_code; SG(headers_sent) = 1; - /* Send a flush bucket down the filter chain. */ - bucket = apr_bucket_flush_create(r->connection->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(brigade, bucket); - if (ap_pass_brigade(r->output_filters, brigade) != APR_SUCCESS || r->connection->aborted) { + if (ap_rflush(r) < 0 || r->connection->aborted) { php_handle_aborted_connection(); } - apr_brigade_cleanup(brigade); } static void php_apache_sapi_log_message(char *msg) @@ -277,7 +255,7 @@ TSRMLS_FETCH(); ctx = SG(server_context); - + /* We use APLOG_STARTUP because it keeps us from printing the * data and time information at the beginning of the error log * line. Not sure if this is correct, but it mirrors what happens @@ -504,8 +482,8 @@ } /* Setup the CGI variables if this is the main request */ - if (r->main == NULL || - /* .. or if the sub-request envinronment differs from the main-request. */ + if (r->main == NULL || + /* .. or if the sub-request envinronment differs from the main-request. */ r->subprocess_env != r->main->subprocess_env ) { /* setup standard CGI variables */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php