Hi Florian I've created the following bug https://issues.apache.org/jira/browse/CMIS-619
Best regards, Denis Andreev -----Original Message----- From: Florian Müller [mailto:[email protected]] Sent: Tuesday, January 15, 2013 2:26 PM To: [email protected] Cc: [email protected] Subject: Re: DotCMIS issue in DotCMIS.Binding.AtomPub.AtomEntryWriter.WriteContent() Hi Denis, Please open a bug report here: https://issues.apache.org/jira/browse/CMIS I'll take a look at it. Thanks, Florian > Hi Everyone > > There is an issue in the method > DotCMIS.Binding.AtomPub.AtomEntryWriter.WriteContent() > > > > private void WriteContent(XmlWriter writer) > > { > > using (var br = new BinaryReader(stream)) > > { > > var buffer = new byte[BufferSize]; > > int readBytes = 0; > > do > > { > > readBytes = br.Read(buffer, 0, BufferSize); > > writer.WriteBase64(buffer, 0, readBytes); > > } while (BufferSize <= readBytes); > > } > > } > > > > The problem is that the method "Stream.Read() or BinaryReader.Read()" > may > read less amount of bytes than the provided buffer size when the end > of the stream has not been reached yet. > > For example. > > The file "File1.txt" of size 30K is requested by HttpWebRequest to > download from a server and transfer it to Alfresco. > > HttpWebRequest returns System.Net.ConnectStream. > > The buffer size to read from stream is 65K. > > In the code above the first read operation returns 4K from the stream > and the condition "while (BufferSize <= readBytes)" finishes the read > cycle. > > > > I've fixed the problem with the code below. The read cycle should > continue > working unit Read returns the value != 0: > > > > private void WriteContent(XmlWriter writer) > > { > > using (var br = new BinaryReader(stream)) > > { > > var buffer = new byte[BufferSize]; > > int readBytes = 0; > > while ((readBytes = br.Read(buffer, 0, BufferSize)) > != 0) > > { > > writer.WriteBase64(buffer, 0, readBytes); > > } > > > > /* > > do > > { > > readBytes = br.Read(buffer, 0, BufferSize); > > writer.WriteBase64(buffer, 0, readBytes); > > } while (BufferSize <= readBytes); > > */ > > } > > } > > > > Would you please consider this code and update DotCMIS library. > > > > Best regards, > > Denis Andreev
