summaryrefslogtreecommitdiffstats
path: root/third_party/libevent/signal.c
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-20 20:23:54 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-20 20:23:54 +0000
commit78d4429cef4baac9bcdfc2396ce157016621c416 (patch)
treeca8e34515c63dd682d9b75b9bfc6113fcb0c2dfd /third_party/libevent/signal.c
parent9101b6b1b3de0a1e3c59325055707c58748651af (diff)
downloadchromium_src-78d4429cef4baac9bcdfc2396ce157016621c416.zip
chromium_src-78d4429cef4baac9bcdfc2396ce157016621c416.tar.gz
chromium_src-78d4429cef4baac9bcdfc2396ce157016621c416.tar.bz2
posix: upgrade libevent from 1.4.7 to 1.4.13
I took this opportunity to rejigger how we hacked around using an uninstalled libevent, to remove a TODO that mentioned danger in the README. Files to review: README.chromium and chromium.patch. The rest are probably rubber-stampable. Review URL: http://codereview.chromium.org/412006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32656 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/libevent/signal.c')
-rw-r--r--third_party/libevent/signal.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/third_party/libevent/signal.c b/third_party/libevent/signal.c
index bcaa3f9..74fa23f 100644
--- a/third_party/libevent/signal.c
+++ b/third_party/libevent/signal.c
@@ -71,7 +71,7 @@ static void evsignal_handler(int sig);
static void
evsignal_cb(int fd, short what, void *arg)
{
- static char signals[100];
+ static char signals[1];
#ifdef WIN32
SSIZE_T n;
#else
@@ -92,7 +92,7 @@ evsignal_cb(int fd, short what, void *arg)
#define FD_CLOSEONEXEC(x)
#endif
-void
+int
evsignal_init(struct event_base *base)
{
int i;
@@ -103,8 +103,16 @@ evsignal_init(struct event_base *base)
* signals that got delivered.
*/
if (evutil_socketpair(
- AF_UNIX, SOCK_STREAM, 0, base->sig.ev_signal_pair) == -1)
+ AF_UNIX, SOCK_STREAM, 0, base->sig.ev_signal_pair) == -1) {
+#ifdef WIN32
+ /* Make this nonfatal on win32, where sometimes people
+ have localhost firewalled. */
+ event_warn("%s: socketpair", __func__);
+#else
event_err(1, "%s: socketpair", __func__);
+#endif
+ return -1;
+ }
FD_CLOSEONEXEC(base->sig.ev_signal_pair[0]);
FD_CLOSEONEXEC(base->sig.ev_signal_pair[1]);
@@ -122,6 +130,8 @@ evsignal_init(struct event_base *base)
EV_READ | EV_PERSIST, evsignal_cb, &base->sig.ev_signal);
base->sig.ev_signal.ev_base = base;
base->sig.ev_signal.ev_flags |= EVLIST_INTERNAL;
+
+ return 0;
}
/* Helper: set the signal handler for evsignal to handler in base, so that
@@ -310,6 +320,7 @@ evsignal_process(struct event_base *base)
ncalls = sig->evsigcaught[i];
if (ncalls == 0)
continue;
+ sig->evsigcaught[i] -= ncalls;
for (ev = TAILQ_FIRST(&sig->evsigevents[i]);
ev != NULL; ev = next_ev) {
@@ -319,7 +330,6 @@ evsignal_process(struct event_base *base)
event_active(ev, EV_SIGNAL, ncalls);
}
- sig->evsigcaught[i] = 0;
}
}