From 2184017299312b0869d84f623f4d53b699ecc6aa Mon Sep 17 00:00:00 2001 From: mhabersack Date: Tue, 16 Feb 2010 12:29:41 +0000 Subject: [PATCH] 2010-02-16 Marek Habersack * src/Mono.WebServer.Apache/ModMonoRequest.cs: FillBuffer makes sure that the MemoryStream is properly reset before filling it from the network. Fixes bug #580086 git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/xsp@151787 e3ebcda4-bce8-0310-ba0a-eca2169e7518 --- ChangeLog | 6 ++++++ src/Mono.WebServer.Apache/ModMonoRequest.cs | 13 +++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index cca30c7b3..297bb559f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-02-16 Marek Habersack + + * src/Mono.WebServer.Apache/ModMonoRequest.cs: FillBuffer makes + sure that the MemoryStream is properly reset before filling it + from the network. Fixes bug #580086 + 2010-01-18 Marek Habersack * src/Mono.WebServer.XSP/AssemblyInfo.cs.in: updated copyright diff --git a/src/Mono.WebServer.Apache/ModMonoRequest.cs b/src/Mono.WebServer.Apache/ModMonoRequest.cs index 0dc58a77b..56033dc9a 100644 --- a/src/Mono.WebServer.Apache/ModMonoRequest.cs +++ b/src/Mono.WebServer.Apache/ModMonoRequest.cs @@ -151,17 +151,18 @@ namespace Mono.WebServer void FillBuffer (int count) { - if (reader_ms.Capacity < count) - reader_ms.SetLength (count); - // This will "reset" the stream - reader_ms.SetLength (0); - reader_ms.Seek (0, SeekOrigin.Begin); + int capacity = reader_ms.Capacity; + if (capacity > count) + reader_ms.Capacity = capacity; + else + reader_ms.Capacity = count; + reader_ms.Seek (0, SeekOrigin.Begin); byte[] buffer = reader_ms.GetBuffer (); int received = client.Receive (buffer, count, SocketFlags.None); reader_ms.SetLength (received); - } + } void Send () { -- 2.11.4.GIT