jani                                     Sat, 01 Aug 2009 03:17:31 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=286613

Log:
- Fixed bug #43510 (stream_get_meta_data() does not return same mode as used in 
fopen)

Bug: http://bugs.php.net/43510 (Assigned) stream_get_meta_data() does not 
return same mode as used in fopen
      
Changed paths:
    U   php/php-src/branches/PHP_5_2/NEWS
    U   php/php-src/branches/PHP_5_2/ext/standard/http_fopen_wrapper.c
    A   php/php-src/branches/PHP_5_2/ext/standard/tests/http/bug43510.phpt
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c
    A   php/php-src/branches/PHP_5_3/ext/standard/tests/http/bug43510.phpt
    U   php/php-src/trunk/ext/standard/http_fopen_wrapper.c
    A   php/php-src/trunk/ext/standard/tests/http/bug43510.phpt

Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS	2009-08-01 03:08:53 UTC (rev 286612)
+++ php/php-src/branches/PHP_5_2/NEWS	2009-08-01 03:17:31 UTC (rev 286613)
@@ -75,6 +75,8 @@
 - Fixed bug #45141 (setcookie will output expires years of >4 digits). (Ilia)
 - Fixed bug #44144 (spl_autoload_functions() should return object instance
   when appropriate). (Hannes, Etienne)
+- Fixed bug #43510 (stream_get_meta_data() does not return same mode as used
+  in fopen). (Jani)
 - Fixed bug #42434 (ImageLine w/ antialias = 1px shorter). (wojjie at gmail dot
   com, Kalle)


Modified: php/php-src/branches/PHP_5_2/ext/standard/http_fopen_wrapper.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/http_fopen_wrapper.c	2009-08-01 03:08:53 UTC (rev 286612)
+++ php/php-src/branches/PHP_5_2/ext/standard/http_fopen_wrapper.c	2009-08-01 03:17:31 UTC (rev 286613)
@@ -325,7 +325,6 @@
 		strlcat(scratch, " HTTP/1.0\r\n", scratch_len);
 	}

-
 	/* send it */
 	php_stream_write(stream, scratch, strlen(scratch));

@@ -756,6 +755,8 @@
 		 * the stream */
 		stream->position = 0;

+		/* restore mode */
+		strlcpy(stream->mode, mode, sizeof(stream->mode));
 	}

 	return stream;

Added: php/php-src/branches/PHP_5_2/ext/standard/tests/http/bug43510.phpt
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/tests/http/bug43510.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_2/ext/standard/tests/http/bug43510.phpt	2009-08-01 03:17:31 UTC (rev 286613)
@@ -0,0 +1,28 @@
+--TEST--
+Bug #43510: stream_get_meta_data() does not return same mode as used in fopen
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
+--FILE--
+<?php
+require 'server.inc';
+
+$responses = array(
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+);
+
+$pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
+
+foreach(array('r', 'rb') as $mode) {
+	$fd = fopen('http://127.0.0.1:12342/', $mode, false);
+	$meta = stream_get_meta_data($fd);
+	var_dump($meta['mode']);
+	fclose($fd);
+}
+
+http_server_kill($pid);
+
+?>
+--EXPECT--
+string(1) "r"
+string(2) "rb"

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS	2009-08-01 03:08:53 UTC (rev 286612)
+++ php/php-src/branches/PHP_5_3/NEWS	2009-08-01 03:17:31 UTC (rev 286613)
@@ -96,6 +96,8 @@
 - Fixed bug #48182 (ssl handshake fails during asynchronous socket connection).
   (Sriram Natarajan)
 - Fixed bug #45554 (Inconsistent behavior of the u format char). (Derick)
+- Fixed bug #43510 (stream_get_meta_data() does not return same mode as used
+  in fopen). (Jani)
 - Fixed bug #42434 (ImageLine w/ antialias = 1px shorter). (wojjie at gmail dot
   com, Kalle)


Modified: php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c	2009-08-01 03:08:53 UTC (rev 286612)
+++ php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c	2009-08-01 03:17:31 UTC (rev 286613)
@@ -326,7 +326,6 @@
 		strlcat(scratch, " HTTP/1.0\r\n", scratch_len);
 	}

-
 	/* send it */
 	php_stream_write(stream, scratch, strlen(scratch));

@@ -772,6 +771,7 @@
 			stream->wrapperdata = response_header;
 		}
 		php_stream_notify_progress_init(context, 0, file_size);
+
 		/* Restore original chunk size now that we're done with headers */
 		if (options & STREAM_WILL_CAST)
 			php_stream_set_chunk_size(stream, chunk_size);
@@ -783,6 +783,9 @@
 		 * the stream */
 		stream->position = 0;

+		/* restore mode */
+		strlcpy(stream->mode, mode, sizeof(stream->mode));
+
 		if (transfer_encoding) {
 			php_stream_filter_append(&stream->readfilters, transfer_encoding);
 		}

Added: php/php-src/branches/PHP_5_3/ext/standard/tests/http/bug43510.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/tests/http/bug43510.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/http/bug43510.phpt	2009-08-01 03:17:31 UTC (rev 286613)
@@ -0,0 +1,56 @@
+--TEST--
+Bug #43510: stream_get_meta_data() does not return same mode as used in fopen
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
+--FILE--
+<?php
+require 'server.inc';
+
+$responses = array(
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+);
+
+$pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
+
+foreach(array('r', 'rb') as $mode) {
+	$fd = fopen('http://127.0.0.1:12342/', $mode, false);
+	$meta = stream_get_meta_data($fd);
+	var_dump($meta['mode']);
+	fclose($fd);
+}
+
+http_server_kill($pid);
+
+?>
+--EXPECT--
+string(1) "r"
+string(2) "rb"
+--TEST--
+Bug #43510: stream_get_meta_data() does not return same mode as used in fopen
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
+--FILE--
+<?php
+require 'server.inc';
+
+$responses = array(
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+);
+
+$pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
+
+foreach(array('r', 'rb') as $mode) {
+	$fd = fopen('http://127.0.0.1:12342/', $mode, false);
+	$meta = stream_get_meta_data($fd);
+	var_dump($meta['mode']);
+	fclose($fd);
+}
+
+http_server_kill($pid);
+
+?>
+--EXPECT--
+string(1) "r"
+string(2) "rb"

Modified: php/php-src/trunk/ext/standard/http_fopen_wrapper.c
===================================================================
--- php/php-src/trunk/ext/standard/http_fopen_wrapper.c	2009-08-01 03:08:53 UTC (rev 286612)
+++ php/php-src/trunk/ext/standard/http_fopen_wrapper.c	2009-08-01 03:17:31 UTC (rev 286613)
@@ -369,7 +369,6 @@
 		strlcat(scratch, " HTTP/1.0\r\n", scratch_len);
 	}

-
 	/* send it */
 	php_stream_write(stream, scratch, strlen(scratch));

@@ -825,6 +824,7 @@
 			stream->wrapperdata = response_header;
 		}
 		php_stream_notify_progress_init(context, 0, file_size);
+
 		/* Restore original chunk size now that we're done with headers */
 		if (options & STREAM_WILL_CAST)
 			php_stream_set_chunk_size(stream, chunk_size);
@@ -836,6 +836,9 @@
 		 * the stream */
 		stream->position = 0;

+		/* restore mode */
+		strlcpy(stream->mode, mode, sizeof(stream->mode));
+
 		if (transfer_encoding) {
 			php_stream_filter_append(&stream->readfilters, transfer_encoding);
 		}

Added: php/php-src/trunk/ext/standard/tests/http/bug43510.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/http/bug43510.phpt	                        (rev 0)
+++ php/php-src/trunk/ext/standard/tests/http/bug43510.phpt	2009-08-01 03:17:31 UTC (rev 286613)
@@ -0,0 +1,84 @@
+--TEST--
+Bug #43510: stream_get_meta_data() does not return same mode as used in fopen
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
+--FILE--
+<?php
+require 'server.inc';
+
+$responses = array(
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+);
+
+$pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
+
+foreach(array('r', 'rb') as $mode) {
+	$fd = fopen('http://127.0.0.1:12342/', $mode, false);
+	$meta = stream_get_meta_data($fd);
+	var_dump($meta['mode']);
+	fclose($fd);
+}
+
+http_server_kill($pid);
+
+?>
+--EXPECT--
+string(1) "r"
+string(2) "rb"
+--TEST--
+Bug #43510: stream_get_meta_data() does not return same mode as used in fopen
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
+--FILE--
+<?php
+require 'server.inc';
+
+$responses = array(
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+);
+
+$pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
+
+foreach(array('r', 'rb') as $mode) {
+	$fd = fopen('http://127.0.0.1:12342/', $mode, false);
+	$meta = stream_get_meta_data($fd);
+	var_dump($meta['mode']);
+	fclose($fd);
+}
+
+http_server_kill($pid);
+
+?>
+--EXPECT--
+string(1) "r"
+string(2) "rb"
+--TEST--
+Bug #43510: stream_get_meta_data() does not return same mode as used in fopen
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
+--FILE--
+<?php
+require 'server.inc';
+
+$responses = array(
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+	"data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+);
+
+$pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
+
+foreach(array('r', 'rb') as $mode) {
+	$fd = fopen('http://127.0.0.1:12342/', $mode, false);
+	$meta = stream_get_meta_data($fd);
+	var_dump($meta['mode']);
+	fclose($fd);
+}
+
+http_server_kill($pid);
+
+?>
+--EXPECT--
+string(1) "r"
+string(2) "rb"
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to