[IOMultiplexerV2] tidied up _IOSocket socket_flag definitions and added possibility...
[NextIRCd.git] / src / IOHandler / IOEngine_kevent.c
index 1c39cc63b4515c628b9f8ba8b16860f5eef8fe45..e654aa9c94f5332615257ad628400ec66e481ed0 100644 (file)
@@ -41,7 +41,8 @@ static void engine_kevent_add(struct _IOSocket *iosock) {
        int nchanges = 0;
        int res;
 
-       EV_SET(&changes[nchanges++], iosock->fd, EVFILT_READ, EV_ADD, 0, 0, iosock);
+       if (iosocket_wants_reads(iosock))
+               EV_SET(&changes[nchanges++], iosock->fd, EVFILT_READ, EV_ADD, 0, 0, iosock);
        if (iosocket_wants_writes(iosock))
                EV_SET(&changes[nchanges++], iosock->fd, EVFILT_WRITE, EV_ADD, 0, 0, iosock);
        
@@ -64,7 +65,7 @@ static void engine_kevent_update(struct _IOSocket *iosock) {
        int nchanges = 0;
        int res;
 
-       EV_SET(&changes[nchanges++], iosock->fd, EVFILT_READ, EV_ADD, 0, 0, iosock);
+       EV_SET(&changes[nchanges++], iosock->fd, EVFILT_READ, iosocket_wants_reads(iosock) ? EV_ADD : EV_DELETE, 0, 0, iosock);
        EV_SET(&changes[nchanges++], iosock->fd, EVFILT_WRITE, iosocket_wants_writes(iosock) ? EV_ADD : EV_DELETE, 0, 0, iosock);
        
        res = kevent(kevent_fd, changes, nchanges, NULL, 0, NULL);