If both EV_READ and EV_WRITE are pending, libev will ... 1) invoke the callback twice, one is for EV_READ, the other is for EV_WRITE. 2) invoke the callback once, revents |= (EV_READ | EV_WRITE). Which is correct? Thanks. Regards, Cheyi Lin