Hi, Seems like I forgot to respond to this e-mail. On 18 August 2013 09:26, Jakub Jermar <[email protected]> wrote:
> On 08/17/2013 11:53 PM, Jiří Zárevúcky wrote: > > async_exchange_begin() > > > > What happens when the remote server has crashed? > > I can see from the code that it internally calls > > async_connect_me_to_internal(), which should fail in that case. It seems > > the function can loop infinitely if the call keeps failing, but I never > > saw such behavior at runtime. Is that because the already existing > > phones don't get discarded even after the connection is broken? > > This is only for parallel exchanges, right? You are right that there > appears not to be a way for async_exchange_begin() to realize the other > side is not there. > > Yes, parallel exchanges. As I understand, serialized exchanges always reuse old phones, which makes them immune to this problem, right? > I think it will have a couple of unsuccessful attempts to recycle an > inactive exchange from other sessions and then it will block on a > condition variable, waiting for some new inactive exchanges to appear, > resulting in a hang. > > Perhaps a simple check for EHANGUP and ENOENT, or just any other hint > from async_connect_me_to_internal(), could help here. > > That sounds good, provided that the error codes are predictable (which means they should be properly specified in the documentation/Doxygen comments). Will you make the change? -- Jirka Z.
_______________________________________________ HelenOS-devel mailing list [email protected] http://lists.modry.cz/listinfo/helenos-devel
