diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/asyncdispatch.nim | 4 | ||||
-rw-r--r-- | lib/pure/ioselects/ioselectors_epoll.nim | 4 | ||||
-rw-r--r-- | lib/pure/ioselects/ioselectors_kqueue.nim | 2 | ||||
-rw-r--r-- | lib/pure/ioselects/ioselectors_select.nim | 4 |
4 files changed, 7 insertions, 7 deletions
diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index f540c5207..38946e82f 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -1559,8 +1559,8 @@ proc drain*(timeout = 500) = ## Waits for completion events and processes them. Raises ``ValueError`` ## if there are no pending operations. In contrast to ``poll`` this ## processes as many events as are available. - if runOnce(timeout): - while hasPendingOperations() and runOnce(0): discard + if runOnce(timeout) or hasPendingOperations(): + while hasPendingOperations() and runOnce(timeout): discard proc poll*(timeout = 500) = ## Waits for completion events and processes them. Raises ``ValueError`` diff --git a/lib/pure/ioselects/ioselectors_epoll.nim b/lib/pure/ioselects/ioselectors_epoll.nim index 7c6f15164..bf13cc83e 100644 --- a/lib/pure/ioselects/ioselectors_epoll.nim +++ b/lib/pure/ioselects/ioselectors_epoll.nim @@ -197,7 +197,7 @@ proc unregister*[T](s: Selector[T], fd: int|SocketHandle) = "Descriptor $# is not registered in the selector!" % $fdi) if pkey.events != {}: when not defined(android): - if pkey.events * {Event.Read, Event.Write} != {}: + if Event.Read in pkey.events or Event.Write in pkey.events or Event.User in pkey.events: var epv = EpollEvent() # TODO: Refactor all these EPOLL_CTL_DEL + dec(s.count) into a proc. if epoll_ctl(s.epollFD, EPOLL_CTL_DEL, fdi.cint, addr epv) != 0: @@ -237,7 +237,7 @@ proc unregister*[T](s: Selector[T], fd: int|SocketHandle) = if posix.close(cint(fdi)) != 0: raiseIOSelectorsError(osLastError()) else: - if pkey.events * {Event.Read, Event.Write} != {}: + if Event.Read in pkey.events or Event.Write in pkey.events or Event.User in pkey.events: var epv = EpollEvent() if epoll_ctl(s.epollFD, EPOLL_CTL_DEL, fdi.cint, addr epv) != 0: raiseIOSelectorsError(osLastError()) diff --git a/lib/pure/ioselects/ioselectors_kqueue.nim b/lib/pure/ioselects/ioselectors_kqueue.nim index 0c51e67f4..65dc0c496 100644 --- a/lib/pure/ioselects/ioselectors_kqueue.nim +++ b/lib/pure/ioselects/ioselectors_kqueue.nim @@ -632,4 +632,4 @@ template withData*[T](s: Selector[T], fd: SocketHandle|int, value, body1, proc getFd*[T](s: Selector[T]): int = - return s.kqFD.int \ No newline at end of file + return s.kqFD.int diff --git a/lib/pure/ioselects/ioselectors_select.nim b/lib/pure/ioselects/ioselectors_select.nim index 1f608e43e..b90a01c06 100644 --- a/lib/pure/ioselects/ioselectors_select.nim +++ b/lib/pure/ioselects/ioselectors_select.nim @@ -286,7 +286,7 @@ proc unregister*[T](s: Selector[T], fd: SocketHandle|int) = s.withSelectLock(): let fd = fd.SocketHandle var pkey = s.getKey(fd) - if Event.Read in pkey.events: + if Event.Read in pkey.events or Event.User in pkey.events: IOFD_CLR(fd, addr s.rSet) dec(s.count) if Event.Write in pkey.events: @@ -462,4 +462,4 @@ template withData*[T](s: Selector[T], fd: SocketHandle|int, value, proc getFd*[T](s: Selector[T]): int = - return -1 \ No newline at end of file + return -1 |