ID: 35849 Comment by: eddi at ai000 dot de Reported By: sqchen at citiz dot net Status: Assigned Bug Type: Streams related Operating System: * PHP Version: 5CVS-2005-12-30 (cvs) Assigned To: wez New Comment:
stream_copy_to_stream() does not copy from sockets $s=stream_socket_server('tcp://127.0.0.1:1100',$er,$es); while($c=stream_socket_accept($s,200)){ $dat=fopen('text.txt','w'); stream_copy_to_stream($c,$dat); } PHP 5.1.4 (cli) GNU/Linux 2.6.16.18 Previous Comments: ------------------------------------------------------------------------ [2005-12-30 14:52:26] [EMAIL PROTECTED] Assigned to the streams maintainer. ------------------------------------------------------------------------ [2005-12-30 13:32:52] [EMAIL PROTECTED] I can see two bugs in this report: * mmap()'ed fds aren't seeked() to update the position * the length is a size_t, where it should be a ssize_t, because PHP_STREAM_COPY_ALL is defined to -1 my patch: http://mega.ist.utl.pt/~ncpl/php_stream_mmap.txt it makes all negative values to read all the file (to be consistent with non-mmap'ed fds). I can also see some long/size_t/ssize_t mixes, which can be problematic in some platforms. ------------------------------------------------------------------------ [2005-12-30 08:25:20] sqchen at citiz dot net SORRY, I have make a mistake on the code above, Below is the right code Description: ------------ stream_copy_to_stream() do strange behavior when the maxlength parameter is negative, see the following codes: Reproduce code: --------------- <?php $src = fopen("1.txt", "r"); //"hell, world" in "1.txt" $dest1 = fopen("des1.txt", "w"); $dest2 = fopen("des2.txt", "w"); /*----seg1------*/ stream_copy_to_stream($src, $des1, -2); readfile("des1.txt"); //hello, world stream_copy_to_stream($src, $des2); readfile("des2.txt"); //nothing? why? /* please compare it with seg2*/ /*----seg2-------*/ stream_copy_to_stream($src, $des1, 2); readfile("des1.txt"); //he stream_copy_to_stream($src, $des2); readfile("des2.txt"); //hello, world ?> ------------------------------------------------------------------------ [2005-12-30 07:43:17] sqchen at citiz dot net Description: ------------ stream_copy_to_stream() do strange behavior when the maxlength parameter is negative, see the following codes: Reproduce code: --------------- <?php $src = fopen("1.txt", "r"); //"hell, world" in "1.txt" $dest1 = fopen("des1.txt", "w"); $dest2 = fopen("des2.txt", "w"); /*----seg1------*/ stream_copy_to_stream($src, $des1, -2); readfile("des1.txt"); //hello, world stream_copy_to_stream($src, $des1); readfile("des2.txt"); //nothing? why? /* please compare it with seg2*/ /*----seg2-------*/ stream_copy_to_stream($src, $des1, 2); readfile("des1.txt"); //he stream_copy_to_stream($src, $des1); readfile("des2.txt"); //hello, world ?> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=35849&edit=1