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

Reply via email to