#50787 [NEW]: stream_set_write_buffer() has no effect on socket streams

From: Date: Sun, 17 Jan 2010 19:03:31 +0000
Subject: #50787 [NEW]: stream_set_write_buffer() has no effect on socket streams
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-146754@lists.php.net to get a copy of this message
From: vnegrier at optilian dot com Operating system: linux PHP version: 5.3.1 PHP Bug Type: Streams related Bug description: stream_set_write_buffer() has no effect on socket streams Description: ------------ Socket streams do not implement the PHP_STREAM_OPTION_WRITE_BUFFER call, and the stream chunk size is always fixed at 8192 bytes. This is not a problem with SOCK_STREAM type sockets, but with SOCK_DGRAM is breaks the datagrams if they are more than 8192 bytes (which is IMHO a bug). Here is a patch against 5.3.1 to add support for stream_set_write_buffer() with socket streams: --- main/streams/xp_socket.c.orig 2010-01-17 19:56:39.000000000 +0100 +++ main/streams/xp_socket.c 2010-01-17 19:59:34.000000000 +0100 @@ -266,6 +266,7 @@ int oldmode, flags; php_netstream_data_t *sock = (php_netstream_data_t*)stream->abstract; php_stream_xport_param *xparam; + size_t size; switch(option) { case PHP_STREAM_OPTION_CHECK_LIVENESS: @@ -400,6 +401,14 @@ return PHP_STREAM_OPTION_RETURN_NOTIMPL; } + case PHP_STREAM_OPTION_WRITE_BUFFER: + if (ptrparam) + size = *(size_t *)ptrparam; + else + size = PHP_SOCK_CHUNK_SIZE; + php_stream_set_chunk_size(stream, size); + return PHP_STREAM_OPTION_RETURN_OK; + default: return PHP_STREAM_OPTION_RETURN_NOTIMPL; } -- Edit bug report at http://bugs.php.net/?id=50787&edit=1 -- Try a snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=50787&r=trysnapshot52 Try a snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=50787&r=trysnapshot53 Try a snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=50787&r=trysnapshot60 Fixed in SVN: http://bugs.php.net/fix.php?id=50787&r=fixed Fixed in SVN and need be documented: http://bugs.php.net/fix.php?id=50787&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=50787&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=50787&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=50787&r=needscript Try newer version: http://bugs.php.net/fix.php?id=50787&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=50787&r=support Expected behavior: http://bugs.php.net/fix.php?id=50787&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=50787&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=50787&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=50787&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=50787&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=50787&r=dst IIS Stability: http://bugs.php.net/fix.php?id=50787&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=50787&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=50787&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=50787&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=50787&r=mysqlcfg

« previous php.bugs (#146754) next »