On Jul 5, 2012, at 4:20 PM, Nick Mathewson wrote: > On Thu, Jul 5, 2012 at 3:34 PM, Scott Dorr <j.scott.d...@gmail.com> wrote: >> When an event_del() is called on an evq, what happens to triggerings that >> were already 'in-flight' but haven't had their callbacks called yet. > > event_del() will make an active event inactive; if its callback was > scheduled but has not been run, it won't be run.
This is the answer I was looking for. Thanks. :) >> For example: >> >> read event R is active on fd 42, uses 'callback_func()' as its callback >> new packet P1 comes in on fd 42 >> new packet P2 comes in on fd 42 >> libevent calls callback_func() for P1 >> callback_func() calls event_del() on event R > > In this case, callback_func would not even be scheduled until the next > time around the event loop. > >> What happens with P2? Is callback_func() still going to be called for it? > > Nope, not unless you call event_add() on R again. > > The easiest pattern here is to try to drain your socket completely on > the callback. Libevent doesn't promise you one callback per packet; > it promises you what you will get a callback so long as the socket is > active and readable. Yup, makes sense. I just needed to get my head around the specifics of what happens with that event_del(). Thanks for the response! - scott*********************************************************************** To unsubscribe, send an e-mail to majord...@freehaven.net with unsubscribe libevent-users in the body.