Bug #48725 [Com]: Support for flushing in zlib stream

From: Date: Tue, 13 Dec 2011 22:36:17 +0000
Subject: Bug #48725 [Com]: Support for flushing in zlib stream
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-165846@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=48725&edit=1

 ID:                 48725
 Comment by:         dtrebbien at gmail dot com
 Reported by:        slusarz at curecanti dot org
 Summary:            Support for flushing in zlib stream
 Status:             Open
 Type:               Bug
 Package:            Streams related
 Operating System:   Linux
 PHP Version:        5.2.10
 Block user comment: N
 Private report:     N

 New Comment:

See also: http://stackoverflow.com/questions/7508762/using-zlib-filter-with-a-socket-pair/


Previous Comments:
------------------------------------------------------------------------
[2009-10-23 12:25:10] jani@php.net

It's related, not same. :)

------------------------------------------------------------------------
[2009-10-22 21:40:37] slusarz at curecanti dot org

I don't think this is related to bug #49816.  Turning off zlib output compression (by adding
"ini_set('zlib.output_compression', 'Off');" to the top of the test
script)doesn't alter the results from the test script previously reported.

------------------------------------------------------------------------
[2009-10-19 15:15:51] jani@php.net

See also bug #49816

------------------------------------------------------------------------
[2009-07-14 03:10:46] slusarz at curecanti dot org

<?php

// 16,000 bytes
$text = str_repeat('0123456789abcdef', 1000);

$temp = fopen('php://temp', 'r+');
stream_filter_append($temp, 'zlib.deflate', STREAM_FILTER_WRITE);
fwrite($temp, $text);

rewind($temp);
fpassthru($temp);

print "Location: " . ftell($temp) . "\n";

fclose($temp);

// Expected: compressed data; Location = some non-zero integer
// Actual: No data output; Location = 0

------------------------------------------------------------------------
[2009-06-29 20:03:00] slusarz at curecanti dot org

Description:
------------
There does not seem to be any support for flushing data in a zlib compression stream.  Not sure if
this is an omission, something obvious that I am missing (and may not be in the documentation), or
the fact that the zlib stream filter does not support socket operation.

Reproduce code:
---------------
$stream = stream_socket_client([...]);

// Login to remote server & enable compression remotely (e.g. implementation of IMAP COMPRESS
extension - RFC 4978)

stream_filter_append($stream, 'zlib.deflate', STREAM_FILTER_WRITE);
stream_set_write_buffer($stream, 0);
fwrite($stream, 'Testing');
fflush($stream);

// tcpdump confirms that nothing is sent from the PHP server to the remote server.  Can confirm that
upon socket timeout, the pending data is sent.

// Similarly, compressed data from incoming stream is not available either.
stream_filter_append($stream, 'zlib.inflate', STREAM_FILTER_READ);
$in = fread($stream, 8192);

// fread() on $stream will timeout.



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=48725&edit=1


Thread (13 messages)

« previous php.bugs (#165846) next »