summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root>2008-02-19 19:01:12 +0000
committerroot <root>2008-02-19 19:01:12 +0000
commit0c8e14659f11acebbf5d102234a3d9d0e94b00a3 (patch)
tree2aa8cdda7524622d1a4360c5b18237dff9b636f8
parent091617c5e9d95bebfbb7f57fa1faeb22fcb57feb (diff)
steting got_:async when we never reset it is harmful as it blocks signal handling
-rw-r--r--Changes2
-rw-r--r--ev.c9
2 files changed, 6 insertions, 5 deletions
diff --git a/Changes b/Changes
index 5fdbff8..e5d53d1 100644
--- a/Changes
+++ b/Changes
@@ -1,7 +1,7 @@
Revision history for libev, a high-performance and full-featured event loop
3.1
- - implement ev_asnc watchers.
+ - implement ev_async watchers.
- only initialise signal pipe on demand.
- make use of sig_atomic_t configurable.
diff --git a/ev.c b/ev.c
index fada483..6d5f18a 100644
--- a/ev.c
+++ b/ev.c
@@ -813,9 +813,6 @@ evpipe_init (EV_P)
ev_io_set (&pipeev, evpipe [0], EV_READ);
ev_io_start (EV_A_ &pipeev);
ev_unref (EV_A); /* watcher should not keep loop alive */
-
- /* in case we received the signal before we had the chance of installing a handler */
- ev_feed_event (EV_A_ &pipeev, 0);
}
}
@@ -1223,7 +1220,11 @@ loop_fork (EV_P)
if (ev_is_active (&pipeev))
{
/* this "locks" the handlers against writing to the pipe */
- gotsig = gotasync = 1;
+ /* while we modify the fd vars */
+ gotsig = 1;
+#if EV_ASYNC_ENABLE
+ gotasync = 1;
+#endif
ev_ref (EV_A);
ev_io_stop (EV_A_ &pipeev);