Christopher Layne wrote:
-       if (!base->sig.ev_signal_added) {
-               base->sig.ev_signal_added = 1;
-               event_add(&base->sig.ev_signal, NULL);
+       if (!sig->ev_signal_added) {
+               sig->ev_signal_added = 1;
+               event_add(&sig->ev_signal, NULL);
        }
There's a bug here (that predates your change): this code should handle event_add() failure. (E.g., epoll_ctl() returning ENOMEM.)

Fix in same, or sweep up in a later patch? How many other places are
there where we're not currently checking the return value of
event_add()? If there are more than this, we might as well just do it
separately.

-cl

Looks like there are a number of others:

* evsignal_cb <- evsignal_add() should probably be using EV_PERSIST so this call is unnecessary

* bufferevent_read_cb
* bufferevent_read_pressure_cb
* bufferevent_write_cb
* bufferevent_write
* evdns_add_server_port
* evdns_server_request_respond
* evhttp_add_event
* evhttp_connection_start_detectclose
* evhttp_bind_socket

Most look straightforward to fix, but I'm not sure how the callbacks should indicate error.

There are also several unchecked event_del() calls, but I think it's safe to assume those will fail only on logic error.
_______________________________________________
Libevent-users mailing list
Libevent-users@monkey.org
http://monkeymail.org/mailman/listinfo/libevent-users

Reply via email to