[Mono-list] Re: SslClientStream: nonblocking read?

Carlos Guzmán Álvarez carlosga@telefonica.net
Fri, 03 Dec 2004 17:31:48 +0100


> If I understand correctly the source, then I pass "count" to the Read
> function and it will read as many SSL/TLS records as necessary to get
> count bytes before returning. In my situation, I would have to set
> count = 1 but this is horribly inefficient -- I would like to set
> count to max(1, input_buffer.Available).
Can you do a little test ?? Just modify the RecordProtocol.ReceiveRecord 
method as:

       public byte[] ReceiveRecord()
           if (this.context.ConnectionEnd)
               throw new TlsException(
                   "The session is finished and it's no longer valid.");

           // If the inner stream is a NetworkStream and there are no data
           // return null
           if (this.context.IsActual && this.innerStream is NetworkStream)
               if (!((NetworkStream)this.innerStream).DataAvailable)
                   return null;


And let us now if that helps. If not, can you send a test case 
reproducing the problem ??

Best regards

Carlos Guzmán Álvarez

"In the end there can be only one" (Highlander)