On 10/27/09, Eric M. Hopper <[email protected]> wrote: > On Tue, 2009-10-27 at 09:53 -0400, Pierre Phaneuf wrote: > > Looking at the evhttp_write() callback handler (in http.c), I see a > > call to evbuffer_write() at line 685, which in turns calls write() (at > > line 413 of buffer.c), and neither seems to handle EINTR. I see EINTR > > handling in evhttp_read(), though. Simple omission? > > > > I also wonder why EINTR isn't handled at the evbuffer level, say, > > since there is pretty much nothing else to do than retry it > > immediately, isn't it? As opposed to EAGAIN, say, which requires > > retrying it at a later time, when another event comes in... > > Actually, EINTR can be useful for moving signal handling back into the > normal flow of a program. EINTR tells you that one happened so you can > go back to the main event loop and dispatch the signal handler if need > be. > > I don't know that libevent does this, but that's what I think EINTR is > useful for.
Btw, this discussion seem to connect to the non-blocking discussion - looping on EINTR is safe on non-blocking sockets, but not on blocking ones, as there is chance to stall the app. -- marko *********************************************************************** To unsubscribe, send an e-mail to [email protected] with unsubscribe libevent-users in the body.
