]> granicus.if.org Git - libevent/commitdiff
make kqueue signal callback work with sigchld. cast and better timeout.
authorNiels Provos <provos@gmail.com>
Thu, 13 Jun 2002 01:54:07 +0000 (01:54 +0000)
committerNiels Provos <provos@gmail.com>
Thu, 13 Jun 2002 01:54:07 +0000 (01:54 +0000)
svn:r27

event.h
kqueue.c

diff --git a/event.h b/event.h
index 6079f9ad0b1928127d14a6104a2ee020668cb2c3..a9ad3ec59303bd0bb6f462ef0a8b6da5ed907a21 100644 (file)
--- a/event.h
+++ b/event.h
@@ -112,7 +112,7 @@ struct eventop {
        int (*dispatch)(void *, struct timeval *);
 };
 
-#define TIMEOUT_DEFAULT        {0, 250000L}
+#define TIMEOUT_DEFAULT        {5, 0}
 
 void event_init(void);
 int event_dispatch(void);
index 38960dec8519420d23a978bd210e93cf75b50f70..c7a9a427247f254c50981905affa074edff2e085 100644 (file)
--- a/kqueue.c
+++ b/kqueue.c
@@ -164,6 +164,12 @@ kq_insert(struct kqop *kqop, struct kevent *kev)
        return (0);
 }
 
+static void
+kq_sighandler(int sig)
+{
+       /* Do nothing here */
+}
+
 int
 kq_dispatch(void *arg, struct timeval *tv)
 {
@@ -275,7 +281,7 @@ kq_add(void *arg, struct event *ev)
                if (kq_insert(kqop, &kev) == -1)
                        return (-1);
 
-               if (signal(nsignal, SIG_IGN) == SIG_ERR)
+               if (signal(nsignal, kq_sighandler) == SIG_ERR)
                        return (-1);
 
                ev->ev_flags |= EVLIST_X_KQINKERNEL;
@@ -324,7 +330,7 @@ kq_del(void *arg, struct event *ev)
                int nsignal = EVENT_SIGNAL(ev);
 
                memset(&kev, 0, sizeof(kev));
-               kev.ident = signal;
+               kev.ident = (int)signal;
                kev.filter = EVFILT_SIGNAL;
                kev.flags = EV_DELETE;