summaryrefslogtreecommitdiffstats
path: root/lib/libevent/kqueue.c
diff options
context:
space:
mode:
authorart <art@openbsd.org>2002-07-10 14:41:31 +0000
committerart <art@openbsd.org>2002-07-10 14:41:31 +0000
commite5c7daabd8589a0a527aaf01950329b59450e15c (patch)
tree4d2cd7cd55680495c89233f9aa6e0d02378327f3 /lib/libevent/kqueue.c
parentmake it work with chroot (diff)
downloadwireguard-openbsd-e5c7daabd8589a0a527aaf01950329b59450e15c.tar.xz
wireguard-openbsd-e5c7daabd8589a0a527aaf01950329b59450e15c.zip
Make EV_PERSIST work on EV_READ and EV_WRITE events.
provos@ ok.
Diffstat (limited to 'lib/libevent/kqueue.c')
-rw-r--r--lib/libevent/kqueue.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/libevent/kqueue.c b/lib/libevent/kqueue.c
index 2985daa6f0b..fa106d4dd1f 100644
--- a/lib/libevent/kqueue.c
+++ b/lib/libevent/kqueue.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kqueue.c,v 1.4 2002/06/25 15:50:15 mickey Exp $ */
+/* $OpenBSD: kqueue.c,v 1.5 2002/07/10 14:41:31 art Exp $ */
/*
* Copyright 2000-2002 Niels Provos <provos@citi.umich.edu>
@@ -295,7 +295,9 @@ kq_add(void *arg, struct event *ev)
memset(&kev, 0, sizeof(kev));
kev.ident = ev->ev_fd;
kev.filter = EVFILT_READ;
- kev.flags = EV_ADD | EV_ONESHOT;
+ kev.flags = EV_ADD;
+ if (!(ev->ev_events & EV_PERSIST))
+ kev.filter |= EV_ONESHOT;
kev.udata = ev;
if (kq_insert(kqop, &kev) == -1)
@@ -308,7 +310,9 @@ kq_add(void *arg, struct event *ev)
memset(&kev, 0, sizeof(kev));
kev.ident = ev->ev_fd;
kev.filter = EVFILT_WRITE;
- kev.flags = EV_ADD | EV_ONESHOT;
+ kev.flags = EV_ADD;
+ if (!(ev->ev_events & EV_PERSIST))
+ kev.filter |= EV_ONESHOT;
kev.udata = ev;
if (kq_insert(kqop, &kev) == -1)