diff options
author | 2002-07-10 14:41:31 +0000 | |
---|---|---|
committer | 2002-07-10 14:41:31 +0000 | |
commit | e5c7daabd8589a0a527aaf01950329b59450e15c (patch) | |
tree | 4d2cd7cd55680495c89233f9aa6e0d02378327f3 /lib/libevent/kqueue.c | |
parent | make it work with chroot (diff) | |
download | wireguard-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.c | 10 |
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) |