The "spinner" in GdsConnection::NextOperation() doesn't seem to be any
good idea, it causes the application to lock up in random situations.

The root cause is "return this.innerStream.Read(buffer, offset, count)"
in XdrStream::Read, which block if no data is available.

A hotfix is to add the following lines before this return statement

System.Net.Sockets.NetworkStream stream = this.innerStream as
System.Net.Sockets.NetworkStream;
if (stream != null && stream.DataAvailable == false)
   return 0;

A proper fix would require the use of a timeout period and some
exception throwing in ReadInt32 et.al.

Hope this help others stumbling over the same problem.


-frode

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Firebird-net-provider mailing list
Firebird-net-provider@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider

Reply via email to