php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #52926 stream_context_set_default() does not work as intended with stream chaining
Submitted: 2010-09-26 15:07 UTC Modified: 2011-04-03 15:15 UTC
From: simast at gmail dot com Assigned: pajoye (profile)
Status: Closed Package: Zlib related
PHP Version: 5.3.3 OS: Windows
Private report: No CVE-ID: None
 [2010-09-26 15:07 UTC] simast at gmail dot com
Description:
------------
Hello!

I was trying to add gzip/deflate support to standard HTTP streams (code attached). 
It seems stream_context_set_default() works fine as long as stream wrappers are 
not chained, like when used with "compress.zlib://" it will not use options as set 
with this function and will revert to php default ones.

Simas

Test script:
---------------
stream_context_set_default(array(

	'http' => array(
		'protocol_version' => 1.1, // HTTP 1.1 compatible
		'header' => array(
			'Connection: close', // No Keep-Alive
			'Accept-Encoding: gzip, deflate' // We support content compression
		)
	)
));

file_get_contents('compress.zlib://http://example.com');

Expected result:
----------------
Default stream options should be used for chained streams as well.


Patches

zlib_inner_open (last revision 2010-09-26 19:49 UTC by cataphract@php.net)

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2010-09-26 21:48 UTC] cataphract@php.net
-Status: Open +Status: Analyzed -Package: Streams related +Package: Zlib Related
 [2010-09-26 21:48 UTC] cataphract@php.net
Fixed in attached patch.

The problem is php_stream_gzopen doesn't forward the context when opening the inner stream; this isn't limited to default contexts.
 [2010-09-26 21:49 UTC] cataphract@php.net
The following patch has been added/updated:

Patch Name: zlib_inner_open
Revision:   1285530552
URL:        http://bugs.php.net/patch-display.php?bug=52926&patch=zlib_inner_open&revision=1285530552
 [2010-09-26 22:34 UTC] simast at gmail dot com
That was quick! I imagine this patch will fix the following code as well?

file_get_contents(
	'compress.zlib://http://example.com',
	false, 
	stream_context_create(array('http' => ...))
);

Thanks!
 [2010-09-26 22:46 UTC] pajoye@php.net
Automatic comment from SVN on behalf of pajoye
Revision: http://svn.php.net/viewvc/?view=revision&revision=303772
Log: - fix bug #52926, zlib fopen wrapper does not use the context
 [2010-09-26 22:47 UTC] pajoye@php.net
-Status: Analyzed +Status: Closed -Assigned To: +Assigned To: pajoye
 [2010-09-26 22:47 UTC] pajoye@php.net
This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 10:01:29 2024 UTC