]> granicus.if.org Git - php/commitdiff
Memory leak fix (patch by Joe Orton)
authorEdin Kadribasic <edink@php.net>
Fri, 25 Jun 2004 12:51:38 +0000 (12:51 +0000)
committerEdin Kadribasic <edink@php.net>
Fri, 25 Jun 2004 12:51:38 +0000 (12:51 +0000)
sapi/apache2handler/sapi_apache2.c

index 6043e34f2917c7c350beedbe85880eef13efe7f1..445daeae13cd3a14be49a03c51d937173f95dc19 100644 (file)
@@ -67,30 +67,15 @@ char *apache2_php_ini_path_override = NULL;
 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. */
 }
@@ -246,8 +231,6 @@ static void
 php_apache_sapi_flush(void *server_context)
 {
        php_struct *ctx;
-       apr_bucket_brigade *brigade;
-       apr_bucket *bucket;
        request_rec *r;
        TSRMLS_FETCH();
 
@@ -260,20 +243,15 @@ php_apache_sapi_flush(void *server_context)
        }
 
        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)