http://bugzilla.novell.com/show_bug.cgi?id=591291
http://bugzilla.novell.com/show_bug.cgi?id=591291#c0 Summary: XmlInputStream.Read may block with unprocessed bytes in buffer Classification: Mono Product: Mono: Class Libraries Version: 2.6.x Platform: All OS/Version: All Status: NEW Severity: Normal Priority: P5 - None Component: Sys.XML AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100204 SUSE/3.5.8-0.1.1 Firefox/3.5.8 I'm using an XmlReader with the source stream being the output stream of a WebResponse. When the internal XmlInputStream is initialized with the source stream, it reads available data up to the size of it's internal buffer. In my case, a very small amount of data is initially available. When the XmlReader begins parsing it first calls XmlInputStream which does a blocking read on the source stream because the amount of data in it's internal buffer was smaller than requested. This is inconsistent with Microsoft's XmlReader buffering which parses all available stream data before blocking. I was able to resolve my issue and get correct behavior with the following change... diff XmlInputStream.cs /usr/src/packages/BUILD/mono-2.6.3/mcs/class/System.XML/System.Xml/XmlInputStream.cs 576c576,577 < ret = (0 == bufRest) ? stream.Read (buffer, offset + bufRest, count - bufRest) : bufRest; --- > ret = bufRest + > stream.Read (buffer, offset + bufRest, > count - bufRest); Reproducible: Always Steps to Reproduce: 1.Create a Stream and push a small amount of data into it (<1024 bytes) 2.Create an XmlReader over the Stream 3.Read from the XmlReader -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
