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

Reply via email to