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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: simast at gmail dot com
New email:
PHP Version: OS:

 

 [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: Sun Oct 27 16:01:27 2024 UTC