mirror of
https://github.com/fluencelabs/redis
synced 2025-03-30 22:31:03 +00:00
Fixed a lame epoll issue
This commit is contained in:
parent
163f4b8cb2
commit
67669f0032
@ -29,10 +29,13 @@ static void aeApiFree(aeEventLoop *eventLoop) {
|
|||||||
static int aeApiAddEvent(aeEventLoop *eventLoop, int fd, int mask) {
|
static int aeApiAddEvent(aeEventLoop *eventLoop, int fd, int mask) {
|
||||||
aeApiState *state = eventLoop->apidata;
|
aeApiState *state = eventLoop->apidata;
|
||||||
struct epoll_event ee;
|
struct epoll_event ee;
|
||||||
|
/* If the fd was already monitored for some event, we need a MOD
|
||||||
|
* operation. Otherwise we need an ADD operation. */
|
||||||
int op = eventLoop->events[fd].mask == AE_NONE ?
|
int op = eventLoop->events[fd].mask == AE_NONE ?
|
||||||
EPOLL_CTL_ADD : EPOLL_CTL_MOD;
|
EPOLL_CTL_ADD : EPOLL_CTL_MOD;
|
||||||
|
|
||||||
ee.events = 0;
|
ee.events = 0;
|
||||||
|
mask |= eventLoop->events[fd].mask; /* Merge old events */
|
||||||
if (mask & AE_READABLE) ee.events |= EPOLLIN;
|
if (mask & AE_READABLE) ee.events |= EPOLLIN;
|
||||||
if (mask & AE_WRITABLE) ee.events |= EPOLLOUT;
|
if (mask & AE_WRITABLE) ee.events |= EPOLLOUT;
|
||||||
if (mask & AE_EXCEPTION) ee.events |= EPOLLPRI;
|
if (mask & AE_EXCEPTION) ee.events |= EPOLLPRI;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user