diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-20 20:23:54 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-20 20:23:54 +0000 |
commit | 78d4429cef4baac9bcdfc2396ce157016621c416 (patch) | |
tree | ca8e34515c63dd682d9b75b9bfc6113fcb0c2dfd /third_party/libevent/signal.c | |
parent | 9101b6b1b3de0a1e3c59325055707c58748651af (diff) | |
download | chromium_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.c | 18 |
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; } } |