thetaphi Sat Nov 29 14:51:45 2008 UTC Modified files: (Branch: PHP_5_2) /php-src/sapi/nsapi nsapi.c Log: Hallo release manager: This patch is not release critical (affects only NSAPI, but I want it to be fixed in the last version of PHP 5.2). If you do not want to have it in, revert it, a new RC is definitely not needed because of this (and I am sure nobody who tests RCs is using NSAPI :)! MFH: Implement flushing in NSAPI, fix some problems with output buffering if the response was not started (no headers sent) before doing something in ub_write() or flush() - Writing or flushing output will fail in NSAPI, if headers were not sent before. http://cvs.php.net/viewvc.cgi/php-src/sapi/nsapi/nsapi.c?r1=1.69.2.3.2.9&r2=1.69.2.3.2.10&diff_format=u Index: php-src/sapi/nsapi/nsapi.c diff -u php-src/sapi/nsapi/nsapi.c:1.69.2.3.2.9 php-src/sapi/nsapi/nsapi.c:1.69.2.3.2.10 --- php-src/sapi/nsapi/nsapi.c:1.69.2.3.2.9 Sun Jun 22 18:10:33 2008 +++ php-src/sapi/nsapi/nsapi.c Sat Nov 29 14:51:45 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: nsapi.c,v 1.69.2.3.2.9 2008/06/22 18:10:33 thetaphi Exp $ */ +/* $Id: nsapi.c,v 1.69.2.3.2.10 2008/11/29 14:51:45 thetaphi Exp $ */ /* * PHP includes @@ -308,7 +308,7 @@ PHP_MINFO_FUNCTION(nsapi) { php_info_print_table_start(); - php_info_print_table_row(2, "NSAPI Module Revision", "$Revision: 1.69.2.3.2.9 $"); + php_info_print_table_row(2, "NSAPI Module Revision", "$Revision: 1.69.2.3.2.10 $"); php_info_print_table_row(2, "Server Software", system_version()); php_info_print_table_row(2, "Sub-requests with nsapi_virtual()", (nsapi_servact_service)?((zend_ini_long("zlib.output_compression", sizeof("zlib.output_compression"), 0))?"not supported with zlib.output_compression":"enabled"):"not supported on this platform" ); @@ -433,8 +433,6 @@ array_init(return_value); - php_header(TSRMLS_C); - for (i=0; i < rc->rq->srvhdrs->hsize; i++) { entry=rc->rq->srvhdrs->ht[i]; while (entry) { @@ -453,9 +451,12 @@ static int sapi_nsapi_ub_write(const char *str, unsigned int str_length TSRMLS_DC) { int retval; - nsapi_request_context *rc; + nsapi_request_context *rc = (nsapi_request_context *)SG(server_context); + + if (!SG(headers_sent)) { + sapi_send_headers(TSRMLS_C); + } - rc = (nsapi_request_context *)SG(server_context); retval = net_write(rc->sn->csd, (char *)str, str_length); if (retval == IO_ERROR /* -1 */ || retval == IO_EOF /* 0 */) { php_handle_aborted_connection(); @@ -463,6 +464,28 @@ return retval; } +/* modified version of apache2 */ +static void sapi_nsapi_flush(void *server_context) +{ + nsapi_request_context *rc = (nsapi_request_context *)server_context; + TSRMLS_FETCH(); + + if (!rc) { + return; + } + + if (!SG(headers_sent)) { + sapi_send_headers(TSRMLS_C); + } + + /* flushing is only supported in iPlanet servers from version 6.1 on, make it conditional */ +#if defined(net_flush) + if (net_flush(rc->sn->csd) < 0) { + php_handle_aborted_connection(); + } +#endif +} + static int sapi_nsapi_header_handler(sapi_header_struct *sapi_header, sapi_headers_struct *sapi_headers TSRMLS_DC) { char *header_name, *header_content, *p; @@ -747,7 +770,7 @@ NULL, /* deactivate */ sapi_nsapi_ub_write, /* unbuffered write */ - NULL, /* flush */ + sapi_nsapi_flush, /* flush */ NULL, /* get uid */ NULL, /* getenv */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php