On Sun, Mar 25, 2018 at 8:26 PM, Michael Kilburn <[email protected]>
wrote:

> On Sun, Mar 25, 2018 at 2:05 PM, Jameson Nash <[email protected]> wrote:
>
>> > unless uv_close() keeps track of currently outstanding requests and
>> Libuv keeps track of all outstanding requests (how else would it have
>> known who to notify for completion)
>>
>
> So, can I rely on uv_close callback to be invoked after all outstanding
> requests (on handle being closed) are canceled (and their callbacks are
> invoked)?
>

For future reference:
I spent considerable time looking through uv_close() code for uv_tcp_t (win
and linux) -- it seems that (as of now) close_cb is guaranteed to be called
after all outstanding connect_cb/write_cb/read_cb are invoked with
UV_ECANCELED. I am about 95% sure -- some of code paths I looked at are
mind-bending...

It also seems that considerable effort was made to deliver this behavior
(esp in Windows case) -- i.e. there is a good chance this guarantee is
intentional and will stand.

Still not sure about other handle types (and general intent wrt order of
close_cb invokation and UV_ECANCELED delivery).

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to