edink Fri Jun 25 08:51:38 2004 EDT
Modified files: (Branch: PHP_4_3)
/php-src/sapi/apache2handler sapi_apache2.c
Log:
Memory leak fix (patch by Joe Orton)
http://cvs.php.net/diff.php/php-src/sapi/apache2handler/sapi_apache2.c?r1=1.1.2.31&r2=1.1.2.32&ty=u
Index: php-src/sapi/apache2handler/sapi_apache2.c
diff -u php-src/sapi/apache2handler/sapi_apache2.c:1.1.2.31
php-src/sapi/apache2handler/sapi_apache2.c:1.1.2.32
--- php-src/sapi/apache2handler/sapi_apache2.c:1.1.2.31 Thu Jun 17 20:37:02 2004
+++ php-src/sapi/apache2handler/sapi_apache2.c Fri Jun 25 08:51:38 2004
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sapi_apache2.c,v 1.1.2.31 2004/06/18 00:37:02 iliaa Exp $ */
+/* $Id: sapi_apache2.c,v 1.1.2.32 2004/06/25 12:51:38 edink Exp $ */
#include <fcntl.h>
@@ -67,30 +67,15 @@
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 @@
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 @@
}
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)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php