ID:               50787
 Updated by:       il...@php.net
 Reported By:      vnegrier at optilian dot com
-Status:           Open
+Status:           Closed
 Bug Type:         Streams related
 Operating System: linux
 PHP Version:      5.3.1
 New Comment:

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.




Previous Comments:
------------------------------------------------------------------------

[2010-01-18 12:50:09] s...@php.net

Automatic comment from SVN on behalf of iliaa
Revision: http://svn.php.net/viewvc/?view=revision&revision=293699
Log: Fixed bug #50787 (stream_set_write_buffer() has no effect on
socket streams).

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

[2010-01-17 19:03:31] vnegrier at optilian dot com

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 this bug report at http://bugs.php.net/?id=50787&edit=1

Reply via email to