Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:33614 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 62504 invoked by uid 1010); 3 Dec 2007 23:31:27 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 62488 invoked from network); 3 Dec 2007 23:31:26 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 3 Dec 2007 23:31:26 -0000 Authentication-Results: pb1.pair.com smtp.mail=vincent@optilian.com; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=vincent@optilian.com; sender-id=unknown Received-SPF: error (pb1.pair.com: domain optilian.com from 195.68.251.133 cause and error) X-PHP-List-Original-Sender: vincent@optilian.com X-Host-Fingerprint: 195.68.251.133 rectophobia.com Received: from [195.68.251.133] ([195.68.251.133:35235] helo=t0x.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 97/21-52978-CC194574 for ; Mon, 03 Dec 2007 18:31:25 -0500 Received: from [10.0.0.106] (six [10.0.0.106]) by t0x.net (8.14.2/8.14.2/Debian-2) with ESMTP id lB3NV9q1001815 for ; Tue, 4 Dec 2007 00:31:09 +0100 Message-ID: <475491BD.9040309@optilian.com> Date: Tue, 04 Dec 2007 00:31:09 +0100 User-Agent: Thunderbird 2.0.0.9 (Windows/20071031) MIME-Version: 1.0 To: internals@lists.php.net References: <47520C61.605@optilian.com> In-Reply-To: <47520C61.605@optilian.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [PATCH] implement stream_set_write_buffer for sockets From: vincent@optilian.com (Vincent NEGRIER) I made a wrong assumption in the first patch and although it worked, stream_set_write_buffer() did return an error. This one is fixes the return value issue : --- main/streams/xp_socket.c.orig 2007-12-01 16:56:29.000000000 +0100 +++ main/streams/xp_socket.c 2007-12-03 21:07:02.000000000 +0100 @@ -254,6 +254,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: @@ -388,6 +389,14 @@ return PHP_STREAM_OPTION_RETURN_NOTIMPL; } + case PHP_STREAM_OPTION_WRITE_BUFFER: + if (ptrparam) + size = *(size_t *)ptrparam; + else + size = CHUNK_SIZE; + php_stream_set_chunk_size(stream, size); + return PHP_STREAM_OPTION_RETURN_OK; + default: return PHP_STREAM_OPTION_RETURN_NOTIMPL; } > Hello, > > Currently stream_set_write_buffer() only works with file streams. If > used on socket streams it always returns -1 and does nothing. This can > be quite problematic when using datagram sockets because any datagram > bigger than the default 8Kb gets chopped and more than one datagram get > sent, eventually messing up with the receiving side. > > This small patch adds support for sockets in stream_set_write_buffer(), > I have tested it and it fixed my problem, but if it needs refinements > i'd be glad to try and help more. > > diff against 5.2.5 is here: > http://rectophobia.com/~six/socket_write_buffer.diff > > Regards, > Vincent