Merge remote-tracking branch 'origin/patches-2.0'

This commit is contained in:
Nick Mathewson 2012-01-24 15:30:51 -05:00
commit ea30a4358c
2 changed files with 46 additions and 2 deletions

View File

@ -1,3 +1,38 @@
Changes in version 2.0.17-stable (?? ??? 2012)
{LAST UPDATED AS OF 5408ff3b89677c77b4cb67afd8c65b36dc23a930}
BUGFIXES (core):
o Be absolutely sure to clear pncalls before leaving event_signal_closure (11f36a5)
o check for sysctl before we use it (358c745 Mike Frysinger)
o Remove bogus casts of socket to int before calling ev_callback (f032516)
o Make evconnlistener work around bug in older Linux when getting nmapped (ecfc720)
o Fix a list corruption bug when using event_reinit() with signals present (6e41cdc)
o Fix a fd leak in event_reinit() (3f18ad1)
BUGFIXES (evbuffer and bufferevents):
o Fix behavior of evbuffer_peek(buf,-1,NULL,NULL,0) (c986f23 Zack Weinberg)
BUGFIXES (evhttp):
o Force strict validation of HTTP version in response. (790f6b3 Catalin Patulea)
BUILD FIXES:
o Fix a silly compilation error with the sun compiler (1927776 Colin Watt)
o Suppress a gcc warning from ignoring fwrite return in http-sample.c (7206e8c)
DOCUMENTATION FIXES:
o Slightly clarify evbuffer_peek documentation (7bbf6ca)
NEW APIS:
o Backport evhttp_connection_get_bufferevent to Libevent 2.0 (da70fa7 Arno Bakker)
TESTS AND TEST FIXES:
o Fix a race condition in the dns/bufferevent_connect_hostname test. (cba48c7)
o Add function to check referential integrity of an event_base (27737d5)
o Check event_base correctness at end of each unit test (3312b02)
o Workaround in the unit tests for an apparent epoll bug in Linux 3.2 (dab9187)
Changes in version 2.0.16-stable (18 Nov 2011) Changes in version 2.0.16-stable (18 Nov 2011)
BUGFIXES (core): BUGFIXES (core):
o More detailed message in case of libevent self-debugging failure. (9e6a4ef Leonid Evdokimov) o More detailed message in case of libevent self-debugging failure. (9e6a4ef Leonid Evdokimov)

13
evmap.c
View File

@ -727,10 +727,13 @@ evmap_check_integrity(struct event_base *base)
#define EVLIST_X_SIGFOUND 0x1000 #define EVLIST_X_SIGFOUND 0x1000
#define EVLIST_X_IOFOUND 0x2000 #define EVLIST_X_IOFOUND 0x2000
int i; evutil_socket_t i;
struct event *ev; struct event *ev;
struct event_io_map *io = &base->io; struct event_io_map *io = &base->io;
struct event_signal_map *sigmap = &base->sigmap; struct event_signal_map *sigmap = &base->sigmap;
#ifdef EVMAP_USE_HT
struct event_map_entry **mapent;
#endif
int nsignals, ntimers, nio; int nsignals, ntimers, nio;
nsignals = ntimers = nio = 0; nsignals = ntimers = nio = 0;
@ -740,11 +743,17 @@ evmap_check_integrity(struct event_base *base)
ev->ev_flags &= ~(EVLIST_X_SIGFOUND|EVLIST_X_IOFOUND); ev->ev_flags &= ~(EVLIST_X_SIGFOUND|EVLIST_X_IOFOUND);
} }
#ifdef EVMAP_USE_HT
HT_FOREACH(mapent, event_io_map, io) {
struct evmap_io *ctx = &(*mapent)->ent.evmap_io;
i = (*mapent)->fd;
#else
for (i = 0; i < io->nentries; ++i) { for (i = 0; i < io->nentries; ++i) {
struct evmap_io *ctx = io->entries[i]; struct evmap_io *ctx = io->entries[i];
if (!ctx) if (!ctx)
continue; continue;
#endif
LIST_FOREACH(ev, &ctx->events, ev_io_next) { LIST_FOREACH(ev, &ctx->events, ev_io_next) {
EVUTIL_ASSERT(!(ev->ev_flags & EVLIST_X_IOFOUND)); EVUTIL_ASSERT(!(ev->ev_flags & EVLIST_X_IOFOUND));