#50787 [NEW]: stream_set_write_buffer() has no effect on socket streams
| From: | vnegrier at optilian dot com | 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