mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
- Fixed bug #43510 (stream_get_meta_data() does not return same mode as used in fopen)
This commit is contained in:
2
NEWS
2
NEWS
@@ -96,6 +96,8 @@ PHP NEWS
|
||||
- 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)
|
||||
|
||||
|
||||
@@ -326,7 +326,6 @@ php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, char *path,
|
||||
strlcat(scratch, " HTTP/1.0\r\n", scratch_len);
|
||||
}
|
||||
|
||||
|
||||
/* send it */
|
||||
php_stream_write(stream, scratch, strlen(scratch));
|
||||
|
||||
@@ -772,6 +771,7 @@ out:
|
||||
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 @@ out:
|
||||
* 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);
|
||||
}
|
||||
|
||||
56
ext/standard/tests/http/bug43510.phpt
Normal file
56
ext/standard/tests/http/bug43510.phpt
Normal file
@@ -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"
|
||||
Reference in New Issue
Block a user