<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div>I have an application that uses a NetworkStream on a Socket and has a loop vaguely like (I am decomposing more abstract calls here):</div><div><br></div><div>while (some condition)</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>var n = stream.Read (buffer, 0, len);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span><do something with buffer></div><div>}</div><div><br></div><div>The odd thing is that sometimes Read() returns 0, even when the stream is clearly not closed.  I verified this by looping until n > 0 in a reproducable situation.   This is on a synchronous socket, so returning 0 should only happen when we hit the end of stream.</div><div><br></div><div>I have not set the stream to be non-blocking and this is a synchronous operation.  Is there any reason why I should ever get 0 back aside from connection closure / loss?   </div><div><br></div><div>Note that I am using 3.0.2 on OSX.  [ 3.0.3 and up has a bug in Socket_2_1.cs which I posted (and posted a patch) 3 months ago.   I cannot upgrade my mono runtime until that is fixed.   Bug <a href="https://bugzilla.xamarin.com/show_bug.cgi?id=9520">9520</a> BTW: ]</div><div><br></div><div>Thanks for any pointers</div><div>Jonathan</div></body></html>