xref: /libevent-2.1.12/ChangeLog (revision d9469d39)
1Changes in version 2.1.5-alpha (?? Dec 2014)
2
3 (As of 7fd4941465e42ec46721150e7ccf1aa2d2bf670b)
4
5 New APIs (evconnlistener)
6   o Provide support for SO_REUSEPORT through LEV_OPT_REUSABLE_PORT (b625361 Maciej Soltysiak)
7
8 Bugfixes (core)
9    o Fix use-after-free error in EV_CLOSURE_EVENT callback (3cc0eac John Ohl)
10
11 Bugfixes (evbuffer)
12   o Fix evbuffer_peek() with len==-1 and start_at non-NULL. (ba59923)
13   o Consistently check for failure from evbuffer_pullup() (60f8f72)
14
15 Bugfixes (windows, IOCP)
16   o be async: avoid double close() (f133b86 Azat Khuzhin)
17
18 Bugfixes (bufferevents)
19   o Fix issue #127, double free for filterevents that use BEV_OPT_CLOSE_ON_FREE (2c82aa0 John Ohl)
20   o make bufferevent_getwatermark api more robust (a21e510 ufo2243)
21   o [Bugfix] fix bufferevent setwatermark suspend_read (b34e4ac ufo2243)
22   o bufferevent_openssl: reset fd_is_set when setfd with -1 is called (3da84c2 Azat Khuzhin)
23   o Fix compilation for older OpenSSL versions. (5c7282f Joakim Soderberg)
24
25 New APIs (evhttp)
26   o Add evhttp_connection_set_family() to set addrinfo->family for DNS requests (12c29b0 Azat Khuzhin)
27   o Implement interface that provides the ability to have an outbound evhttp_connection free itself once all requests have completed (2b9ec4c,10fe4f John Ohl)
28
29 Bugfixes (evdns)
30   o Load hosts file on Windows. (a0b247c Vilmos Nebehaj)
31   o Don't truncate hosts file path on Windows. (d0dc861 Vilmos Nebehaj)
32   o Fix a crash in evdns related to shutting down evdns (9f39c88,e8fe749)
33   o evdns: avoid read-after-free in evdns_request_timeout_callback() (61262a0 Azat Khuzhin)
34   o Correctly handle allocation failures in evdns_getaddrinfo (6a53d15)
35   o evdns: fix EVDNS_BASE_DISABLE_WHEN_INACTIVE in case retransmit/retry (74d0eee Azat Khuzhin)
36   o evdns: add retry/reissue tests for EVDNS_BASE_DISABLE_WHEN_INACTIVE (3ca9d43 Azat Khuzhin)
37   o evdns: fail ns after we are failing/retrasmitting request (97c750d Azat Khuzhin)
38
39 Bugfixes (evhttp)
40   o http: reset connection before installing retry timer (fix http retries handling) (bc79cc5 Azat Khuzhin)
41
42
43 Testing
44   o regress_dns: fix leaks in getaddrinfo_async{,_cancel_stress} tests (2fdc5f2 Azat Khuzhin)
45   o test: add family argument for http_connection_test_() (177b8a7 Azat Khuzhin)
46   o test: add regress for evhttp_connection_set_family() with AF_INET and AF_UNSPEC (42aefeb Azat Khuzhin)
47   o test/http: add regress test for set family to AF_INET6 (3fbf3cc Azat Khuzhin)
48   o Update to a more recent tinytest_macros. (8da5a18)
49   o test/regress: add simplestsignal: to track reorder bugs separately (b897bef Azat Khuzhin)
50   o test/evbuffer_peek: add regress in case we have first buffer greater (e2d139d Azat Khuzhin)
51   o More evbuffer_peek() test cases (154006a)
52   o use correct tt macro for pointer compare (08c88ea)
53   o regress_buffer: fix 'memcmp' compare size (79800df Maks Naumov)
54   o Fix a use-after-free in unit tests. CID 752027 (3739057)
55   o Fix a dead-code warning in unit tests. CID 1193548 (c119f24)
56   o Use evutil_weakrand() in unit tests. (a677b72, 364c110)
57   o Use a more precise calculation for max in time-ratelim.c (ca5b5c7)
58   o Make a buffer larger in the tests to avoid a scary evbuffer_copyout_from() (fb57b8b)
59   o Fix several memory leaks in the unit tests. (89c1a3b)
60   o Add test for evhttp_connection_free_on_completion (b0e9924 John Ohl)
61
62 Sample code
63   o Make http-server.c output into good html5 (6d72bdc)
64   o Use FindClose for handle from FindFirstFile in http-server.c (6466e88)
65   o https-client: add -retries argument, for connection retries (d9da844 Azat Khuzhin)
66
67 Bugfixes (build)
68   o Add missing headerfile for cmake (15d90cc Trond Norbye)
69   o ignore one more test binary (b6593aa Michael Richardson)
70   o ignore config.cache/test-driver files (c83f333 Mike Frysinger)
71   o add a --disable-samples configure flag (0c492b3 Mike Frysinger)
72   o Add a few files created by "make verify" to .gitignore. (1a8295a Pierre Phaneuf)
73   o updates in cmake build (27bd9fa Sergey Nikulov)
74   o Fix cmake error when the Module path has more than one entry. (befbd13 Acer Yang)
75
76Bugfixes (miscellaneous)
77   o tree.h: drop duplicated content of tree.h (6193187 Azat Khuzhin)
78   o evdns: disable probing with EVDNS_BASE_DISABLE_WHEN_INACTIVE (610410b,ad0493e,fea86a6,d83b337,5ca9e97 Azat Khuzhin)
79   o [Bugfix] fix grammer error (3a4d249 ufo2243)
80   o Change return type of evutil_load_windows_system_library_ to HMODULE (f691389)
81   o Fix a c90 warning (76643dd)
82   o Fix a typo in a doxygen comment. Reported by 亦得. (be1aeff)
83   o remove trailing comma from enum (b361b8a Jean-Philippe Ouellet)
84
85 Bugfixes (FreeBSD)
86   o Handle ENOTCAPABLE from FreeBSD - this is returned if an event in the changelist is for an FD that has been closed. (6fd7394 Adrian Chadd)
87
88
89
90
91Changes in version 2.1.4-alpha (21 Mar 2014)
92
93 Libevent 2.1.4-alpha adds a number of new miscellaneous APIs to make
94 Libevent more useful, including support for early close detection with
95 epoll via EPOLLRDHUP, triggering bufferevent callbacks, adding more
96 evhttp callbacks, and more. There are also numerous bugfixes, including
97 a number for finalize-related issues from 2.1.3-alpha; and an
98 alternative (non-primary!) cmake-based build mechanism.
99
100 New APIs (core)
101   o Added event_base_get_num_events() (0fa107d Mobai Zhang)
102   o New event_base_active_by_fd API (865a142 Greg Hazel, 5c9da9a, 87fa2b0)
103   o Add event_base_active_by_signal by analogy (4865943)
104   o Add access to max event count stats (5173bef, efbd3dc, 26230a2
105     Andrew Sweeney)
106   o Implemented EV_CLOSED event for epoll backend
107     (EPOLLRDHUP). (b1b69ac Diego Giagio, 53d2793, 43ffcf6, dfe1e52
108     Marcin Juszkiewicz, ff26633 Joakim Soderberg, 3908a5e)
109
110 New APIs (evutil_secure_rng)
111   o Add evutil_secure_rng_set_urandom_device_file (2bbb5d7)
112
113 New APIs (bufferevents)
114   o Add function to fetch underlying ratelimit cfg (4b3d5af Mark Ellzey)
115   o Pass and return const for bufferevent_get_token_bucket_cfg (1c77fbb
116     Mark Ellzey)
117   o Add watermark introspection (4ce242b Ondřej Kuzník)
118   o Add an option to trigger bufferevent I/O callbacks (61ee18b Ondřej Kuzník)
119   o Add an option to trigger bufferevent event callbacks (a7384c7
120     Ondřej Kuzník)
121   o Clarifications in response to merge req. comments (bd41947 Ondřej
122     Kuzník)
123   o Minor optimizations on bufferevent_trigger options (a3172a4)
124
125 New APIs (evhttp)
126   o Add evhttp_connection_get_server(). (a7f82a3 Maxime Henrion)
127   o add a http default content type option (5a5acd9 Nicolas Martyanoff)
128   o http: implement new evhttp_connection_get_addr() api. (0c7f040 Azat
129     Khuzhin)
130   o Add a variant of evhttp_send_reply_chunk() with a callback on
131     evhttp_write_buffer() (8d8decf Julien BLACHE)
132   o Allow registering callback for parsing HTTP headers (b0bd7fe Balint Reczey)
133   o Provide on request complete callback facility (b083ca0 Andrew Sweeney)
134   o evhttp_request_set_on_complete_cb to be more specific about what
135     the function actually does and usage (da86dda Andrew Sweeney)
136   o Update unit test to make sure that the callback happens after the
137     output data is written (b85f398 Andrew Sweeney)
138
139 Features (evdns)
140   o bug fix for issues #293 evdns_base_load_hosts doesn't remove
141     outdated addresses (954d2f9, f03d353, 45eba6f Kuldeep Gupta)
142
143 Features: (cmake build support)
144   o Initial CMake commit. (e415196 Joakim Soderberg)
145   o Add all tests and benchmarks to CMake project. (e9fc014 Joakim Soderberg)
146   o More work on adding tests to CMake project (99c1dc3 Joakim Soderberg)
147   o Generate a dummy evconfig-private.h so things build
148     properly. (ce14def Joakim Soderberg)
149   o Link libm on unix platforms. (58fcd42 Joakim Soderberg)
150   o Added some GCC specific options. (19222e5 Joakim Soderberg)
151   o Use evutil_closesocket instead. (dbf2b51 Joakim Soderberg)
152   o Add copyright and licensing files for CMake modules. (c259d53
153     Joakim Soderberg)
154   o Only include WIN32 getopt where it is used. (9bbce0b Joakim Soderberg)
155   o Fix bench_cascade program on Windows. (78da644 Joakim Soderberg)
156   o Don't segfault on no found event backend. (8f2af50 Joakim Soderberg)
157   o Only test the event backends available on the system. (7ea4159
158     Joakim Soderberg)
159   o Added a "make verify" target. (e053c4f Joakim Soderberg)
160   o Fix the make "verify" target on Windows. (67e5d74 Joakim Soderberg)
161   o Get rid of deprecation warnings for OpenSSL on OSX 10.7+ (69c3516
162     Joakim Söderberg)
163   o Fix kqueue support. (a831f2f Joakim Söderberg)
164   o Added a test for testing if kqueue works with pipes. (2799b35
165     Joakim Söderberg)
166   o Change the BSD license from 4 to 3-clause. (86df3ed Joakim Soderberg)
167   o Minimum required python version is 2.4. (968e97b Joakim Soderberg)
168   o Get rid of unknown pragma warnings. (0ef1d04 Joakim Soderberg)
169   o Add a "make verify_coverage" target generation coverage
170     info. (f2483f8 Joakim Soderberg)
171   o Fix the "make verify" target on NetBSD (4ac086a Joakim Soderberg)
172   o Only look for ZLib when it is used (if tests are
173     included). (f780593 Joakim Soderberg)
174   o Added EVENT__ENABLE_GCC_WARNINGS, turns all warnings into
175     errors. (dd413bd Joakim Soderberg)
176   o Add CMake config and install targets. (f3446ed Joakim Soderberg)
177   o Fix typo (4b754df Joakim Soderberg)
178   o Some work on making it possible to simply do add_subdirectory() on
179     the project. (49ab363 Joakim Soderberg)
180   o Set USE_DEBUG=1 on EVENT__ENABLE_VERBOSE_DEBUG (fd42e70 Joakim Soderberg)
181   o Fix so that old nmake project still builds. (24d6466 Joakim
182     Soderberg)
183   o Rename README to README.md and use markdown to format. (d2bc39a
184     Joakim Soderberg)
185   o Update README with CMake build instructions. (604b8cc Joakim Soderberg)
186   o Clean up the README some. (8d4cb35 JoakimSoderberg)
187   o Forgotten headers for old nmake project compatability. (8697b99
188     Joakim Soderberg)
189   o Change all uses of WIN32 to _WIN32 (4e14395 Joakim Söderberg)
190   o Fix include bug. (2024467 Joakim Söderberg)
191   o Check if we're on OSX before disabling deprecation in le-proxy
192     (8b40a5b Joakim Söderberg)
193   o Fix broken autotools build. (ae1bd82 Joakim Söderberg)
194   o Disclaimerize cmake a little in the README (d03b5bf)
195   o Fix CMake compile when OpenSSL is disabled. (e423d42 Joakim
196     Söderberg)
197   o CMake: Get rid of python not found warning when regress tests
198     turned off. (d38d798 Joakim Söderberg)
199   o Fix https-client compilation on Windows. (d7be788 Joakim Soderberg)
200   o Guard against EVENT_NOWIN32 being set during testing. (f1715b4
201     Joakim Soderberg)
202   o Check for OSX when checking for clang. (e212c54 Joakim Soderberg)
203   o Added a Travis-CI configuration file. (8c0f0a9 Joakim Soderberg)
204   o Added -Qunused-arguments for clang on macosx (ed99d92 Trond Norbye)
205   o Rename event_extras to event_extra (a0dd5df Trond Norbye)
206   o Add option to build shared library (4545fa9 Trond Norbye)
207   o Add -Qunused-arguments for clang on macos (b56611d Trond Norbye)
208   o Add cmake-related files to .gitignore (e061321 Trond Norbye)
209   o Export event_extra not event_extras. (2b41bcf Joakim Söderberg)
210
211 Bugfixes (core)
212   o If evsel->del() fails, don't leave the evmap in an inconsistent
213     state (9b5a527 Maxime Henrion)
214   o Move event_debug_note_teardown_ before mm_free. (69b5c64)
215   o Check CLOCK_MONOTONIC_* at runtime if needed. (911abf3)
216   o Fix reinit of fds with EV_WRITE but not EV_READ. (ebfd8a8 maksqwe)
217   o Tweaked callbacks to prevent race condition
218     (https://github.com/libevent/libevent/issues/104) (40830f1, 2ea15ed
219     John Ohl)
220   o Move assert(ev) to before we use ev in EV_CLOSURE_EVENT_FINALIZE
221     case (9805972)
222
223 Bugfixes (evhttp)
224   o Fix a double close() bug in evhttp when the underlying bufferevent uses
225     BEV_OPT_CLOSE_ON_FREE. (31db8a0 Maxime Henrion)
226   o Fix an unlikely but possible error case for http connections (f22049e)
227   o Avoid racy bufferevent activation (5eb1788 Nate Rosenblum)
228
229 Bugfixes on 2.0 (Windows)
230   o Use windows vsnprintf fixup logic on all windows environments (e826f19)
231   o libevent/win32_dealloc() : fix sizeof(pointer) vs sizeof(*pointer)
232    (b8f5980 Frank Denis)
233
234 Bugfixes (evutil_secure_rng)
235   o When we seed from /proc/sys/kernel/random/uuid, count it as success
236     (e35b540)
237   o We should return after arc4random_buf() (1ea1f26 Makoto Kato)
238   o Avoid other RNG initialization FS reads when urandom file is
239     specified (9695e9c)
240   o Really remove RNG seeds from the stack (f5ced88)
241   o Fix another arc4random_buf-related warning (e64a2b0)
242
243 Bugfixes (bufferevents)
244   o Initialize async bufferevent timeout CBs unconditionally (af9b2a7)
245
246 Bugfixes (evdns)
247   o Checking request nameserver for NULL, before using it. (5c710c0
248     Belobrov Andrey)
249   o Fix SEGFAULT after evdns_base_resume if no nameservers
250     installed. (14971a8 Azat Khuzhin)
251   o Actually use the log facility for reporting evdns problems. (e1766a1)
252   o Fix SEGFAULT after evdns_base_resume if no nameservers
253     installed. (f8d7df8 Azat Khuzhin)
254   o fix for ServFail from RIPE Atlas release (62f596b Antony Antony)
255
256 Bugfixes (compilation)
257   o Fix test compilation with nmake: add the gdi.lib dependency (5ba8ab7)
258   o Whoops. It is gdi.lib, not gdi32.lib. (github issue #61) (8ab612e)
259   o Don't use return since return type is void and build error occurs
260     using clang (838161d Makoto Kato)
261   o Use void casts to suppress some "unchecked return value" warns (7080d55)
262   o rpcgen: Generate regress.gen.[c,h] in build rather than src dir
263     (243386c Ross Lagerwall)
264   o Fix a compiler warning when checking for arc4random_buf linker
265     breakage. (5cb3865)
266   o Fix 'make distcheck' by adding regress.gen.[ch] to DISTCLEANFILES
267    (239d834)
268
269   o Fix a c90 warning (c207682)
270   o Fix consts in WIN32-Code/getopt*.[ch] (57abb35)
271
272 Bugfixes (locks, synchronization)
273   o Missed lock acquire/release in event_base_cancel_single_callback_()
274     (d3d999a Azat Khuzhin)
275   o Fix locking in bufferevent_get_options_(). (dbc9cd4 Maxime Henrion)
276
277 Bugfixes (leaks)
278   o Avoid leaking segment mappings when offset is not a page multiple (d409514)
279
280 Testing
281   o Add tests for evdns_base_resume(). (1cd9ff5 Azat Khuzhin)
282   o Fix dns/leak_resume_send_err test. (7e876df Azat Khuzhin)
283   o Add checks for evhttp_connection_get_server() in unit
284     tests. (fbc323b Maxime Henrion)
285   o Fix a (failure-only) null dereference in the unit tests (1104d0b)
286   o Fix a logic error in test_evbuffer_freeze (7765884)
287   o Add missing check to test_evbuffer_file_segment_add_cleanup_cb (eba4506)
288   o Fix some crash-on-fail cases in DNS regression tests (87cd6f0)
289   o DNS tests: add a missing check (f314900)
290   o Finalize tests: add a missing check (82b6956)
291   o test_evutil_rtrim: add another missing check. (e193c95)
292   o regress_main: logging all if env EVENT_DEBUG_LOGGING_ALL isset
293     (611e28b Azat Khuzhin)
294   o regress_http: add tests for evhttp_connection_get_addr() (4dd500c
295     Azat Khuzhin)
296   o Update to the latest version of tinytest (7a80476)
297   o Heap-allocate zlib data structure in regress_zlib tests (4947c18)
298
299 Performance tweaks (core)
300   o Avoid redundant syscall to make a nonblocking socket nonblocking
301     (42c03da Maxime Henrion)
302   o Avoid redundant syscall if making a socket cloexec twice (1f29b18)
303   o Avoid redundant invocations of init_extension_functions for IOCP (3b77d62)
304
305 Documentation
306   o Document that arc4random is not a great cryptographic PRNG. (6e49696)
307   o Small doxygen tweaks (6e67b51)
308   o Try another doxygen tweak (ccf432b)
309   o Clarify event_base_loop exit conditions (031a803)
310   o Fix a typo (be7bf2c Ondřej Kuzník)
311   o Document deferred eventcb behaviour (13a9a02 Ondřej Kuzník)
312   o Typo fixes from Linus Nordberg (cec62cb, 8cd695b)
313   o Fix duplicate paragraph in evbuffer_ptr documentation (58408ee)
314
315 Code Improvements (coverity)
316   o Fix a pile of coverity warnings in the unit tests (867f401)
317   o Fix coverity warnings in benchmark tools. (ff7f739)
318   o Whoops; fix compilation in bench.c (544cf88)
319   o Remove spurious checks in evrpc.c error cases (coverity) (991b362)
320   o Fix a couple of compilation warnings in regress_http.c (860767e)
321   o Fix even more coverity warnings. (d240328)
322   o Stop checking for inet_aton; we don't use it. (f665d5c)
323   o Add an include to evrpc-internal to fix openbsd compilation warning
324     (5e161c6)
325
326 Cleanups
327   o Remove an unreachable return statement in minheap-internal.h (e639a9e)
328   o Refactor evmap_{io,signal}_active_() to tolerate bad inputs (974c60e)
329   o Fix needless bufferevent includes in evdns.c (254c04e)
330   o Fix a couple of "#ifdef WIN32" instances (88ecda3)
331   o Remove unneeded declaration in bufferevent-internal.h (4c8ebcd)
332
333 Sample code
334   o le-proxy: Fail more gracefully if opening listener fails (44b2491)
335   o http-server: drop uri_root from base_url in http-server. (6171e1c Azat Khuzhin)
336   o https-client: POST supported, args supported (c5887f7 Alexey Ozeritsky)
337   o https-client: code cleanup (29af65e Alexey Ozeritsky)
338   o https-client: Small tweaks to https-client.c (90786eb)
339   o https-client: Set hostname for SNI extension (by f69m) (d1976f8)
340   o https-client: add a cast to https-client.c (462e6b6)
341
342
343
344Changes in version 2.1.3-alpha (1 May 2013)
345
346 Libevent 2.1.3-alpha fixes various bugs, adds new unit tests, and cleans
347 up the code in a couple of places. It has a new callback in evhttp for
348 reporting errors during a request, a new feature for allowing evdns to
349 not keep the event_base looping when there are no requests inflight, and
350 example code for writing an https client.
351
352 Libevent 2.1.3-alpha also has an important new (experimental) event
353 finalization feature to allow safe event teardown in multithreaded
354 programs. This ought to fix the longstanding bug with deadlocks in
355 multithreaded use of SSL-based bufferevents that some people have been
356 experiencing since Libevent 2.0.
357
358
359 Core (event finalization)
360   o Implement event_finalize() and related functions to avoid certain
361     deadlocks (8eedeab)
362   o Use finalization feature so bufferevents can avoid deadlocks (02fbf68)
363   o Always run pending finalizers when event_base_free() is called (e9ebef8)
364   o Remove bufferevent_del_generic_timeout_cbs as now unused (4ea4c6a)
365   o More documentation for finalization feature (a800b91)
366   o Make the event_finalize* functions return an error code (5d11f4f)
367   o Mark the finalize stuff as experiemental in case it needs to
368     change (23e2e29)
369
370 Evdns
371   o evdns: New flag to make evdns not prevent the event loop from
372     exiting (6b7fa62 Azat Khuzhin)
373
374 Bugfixes (Core)
375   o Make event_remove_timer behave correctly with persistent timers (5623e80)
376   o Unit test for event_remove_timer with EV_PERSIST. (96150dd)
377   o Double-check next timeout when adding events (9443868 Nate Rosenblum)
378   o event_base_update_cache_time should be a no-op if the loop isn't
379     running (5e6fa2a)
380
381 Bugfixes (evhttp, crash fix, from 2.0)
382   o fix #73 and fix http_connection_fail_test to catch it (b618204 Greg Hazel)
383
384 Bugfixes (compilation and portability, from 2.0)
385   o Fix compilation with WIN32_HAVE_CONDITION_VARIABLES enabled (7e45739)
386   o Fix missing AC_PROG_SED on older Autoconfs (9ab2b3f Tay Ray Chuan)
387   o Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5)
388     (74d4c44 Kevin Bowling)
389   o Use AC_CONFIG_HEADERS in place of AM_CONFIG_HEADERS for autmake
390     1.13 compat (817ea36)
391   o Rename configure.in to configure.ac to appease newer autoconfs (0c79787)
392   o Avoid using top_srcdir in TESTS: new automakes do not like this (a55514e)
393
394 Bugfixes (resource leaks/lock errors on error, from 2.0)
395   o Avoid leaking fds on evconnlistener with no callback set (69db261)
396   o Avoid double-close on getsockname error in evutil_ersatz_socketpair
397     (0a822a6)
398   o Fix a locking error in bufferevent_socket_get_dns_error. (0a5eb2e)
399
400 Documentation Fixes (from 2.0)
401   o Fix a mistake in evbuffer_remove() arguments in example http server code
402     (c322c20 Gyepi Sam)
403   o Fix a typo in a comment in buffer.h. Spotted by Alt_F4 (773b0a5)
404
405 Documentation Fixes
406   o minor documentation typos (809586a Patrick Pelletier)
407   o Fix cut-and-paste err in whatsnew-2.1 (49905ac)
408   o Fix comment to refer to sample/include.am correctly (9e8cdf3 Sebastian
409     Hahn)
410   o Fix typo : Dispatching instead of Dispaching (0c2bacc Volker Lendecke)
411   o fix some hinky indentation in evhttp_make_request (80e220e Patrick
412     Pelletier)
413   o "buffer" spelling (a452811 Patrick Pelletier)
414   o Specify return behavior in header for evbuffer_pullup() in corner case
415     (cf8d1cd Dan Petro)
416   o Clarify an important point about event_base_foreach_event() (920a5e6)
417
418 Compilation Fixes/Tool Support
419   o avoid valgrind false positive by zeroing epoll_event (1258614 Patrick
420     Pelletier)
421   o Fix harmless clang enum warning (b452a43 Sebastian Hahn)
422   o remove all exes on "make clean", not just regress.exe (974bfa0 Patrick
423     Pelletier)
424   o Make --disable-libevent-regress work again (787fd74)
425   o Do not build strlcpy.c when it will have no code. (4914620)
426
427 Portability Fixes
428   o When EWOULDBLOCK is not EAGAIN, treat it as equivalent to it (bf7a0ff)
429   o Preliminary changes for Minix3. (0dda56a Nicholas Heath)
430   o Use AC_CONFIG_HEADERS in place of AM_CONFIG_HEADERS for autmake 1.13
431     compat (bf278b)
432   o Avoid using $(top_srcdir) in TESTS. (2863c83)
433   o build test/test-script.sh on systems with a less-featureful $< (f935e21)
434   o Implement EVUTIL_ERR_IS_EAGAIN on windows. (42aaf4d)
435
436 Evhttp changes:
437   o Fix ipv6 support for http. When URL contain domain, not IP
438     address. (71e709c Azat Khuzhin)
439   o uri decode: fix for warning "use of uninitialised value" (64b6ece Azat
440     Khuzhin)
441   o uri decode: changed the test for the existence of the next character
442     (e1903e3 Azat Khuzhin)
443   o Move prototype of evhttp_decode_uri_internal() to http-internal.h
444     (de8101a Azat Khuzhin)
445   o Test: decoding just part of string with evhttp_decode_uri_internal()
446     (1367653 Azat Khuzhin)
447   o Add new error_cb for actual reporting of HTTP request errors. (7b07719
448     Azat Khuzhin)
449   o Add test for EVREQ_HTTP_REQUEST_CANCEL into http_cancel_test() (862c217
450     Azat Khuzhin)
451   o Drop extra header http_struct.h from regress_http.c (54cc800 Azat Khuzhin)
452
453 Testing
454   o Add regress test ipv6_for_domain. (9ec88bd Azat Khuzhin)
455   o Add an environment variable (EVENT_DEBUG_MODE) to run unit tests in debug
456     mode (2fad0f3)
457   o Add a test with an active_later event at event_base_free time. (1c3147f)
458   o Make all tests pass under EVENT_DEBUG_MODE=1 (b1b054f)
459   o Add some verbose notes to bufferevent unit tests (9d893c9)
460   o New test for active_later->active transition on event_active (a153874)
461   o New tests for event_base_foreach_event() (0b096ef)
462   o Unit tests for event_base_gettimeofday_cached() and
463     event_base_update_cache_time() (30ea291)
464   o A test for event_get_assignment() (f09629e)
465   o More unit tests for initializing common timeouts. (d596739)
466   o Fix a bug in the new main/event_foreach test (702c9aa)
467
468 Windows:
469   o use FormatMessage for winsock errors (0c6ec5d, 2078e9b, 4ccdd53, c9ad3af
470     Patrick Pelletier)
471   o a program to print out the error strings for winsock errors (7296512
472     Patrick Pelletier)
473   o Fix a warning introduced in 0c6ec5d8 (eeb700c)
474   o Fix another warning introduced in 0c6ec5d8 (ed26561)
475
476 Examples (http)
477   o Add sample/https-client.c, an example of stacking evhttp as a client on
478     top of bufferevent_ssl. (be46c99 Catalin Patulea)
479   o use ${OPENSSL_LIBS} instead of -lssl -lcrypto (bf31fa5 Patrick Pelletier)
480   o https-client was putting newlines at 256-byte boundaries (42d7441 Patrick
481     Pelletier)
482   o better handling of OpenSSL errors (5754d96 Patrick Pelletier)
483   o use Debian's default root certificate location (aacd674 Patrick Pelletier)
484   o use iSECPartners code to validate hostname in certificate (64d9f16
485     Patrick Pelletier)
486   o avoid sign mismatch warning in openssl_hostname_validation.c (6021cb5
487     Patrick Pelletier)
488   o pull in wildcard matching code from cURL (4db9da6 Patrick Pelletier)
489   o Another tweak to https-client.c (95acdaa)
490   o Remove http_struct.h usage in sample/https-client.c (8a90a85)
491
492
493
494Changes in version 2.1.2-alpha (18 Nov 2012)
495
496 Libevent 2.1.2-alpha includes more portable for monotonic timers,
497 refactors much of Libevent's internal and external infrastructure,
498 closes some longstanding gaps in the interface, makde other
499 improvements.  Ths log below tries to organize features by rough area of
500 effect.  It omits a few commits which were pure bugfixes on other commits
501 listed below.  For more detail, see the git changelogs.  For more
502 insight, see the "whatsnew-2.1.txt" document included in the Libevent
503 2.1.2-alpha distribution.
504
505 Libevent 2.1.2-alpha also includes all changes made in 2.0.19-stable
506 through 2.0.21-stable inclusive.
507
508 Performance (core):
509   o Replace pipe-based notification with EVFILT_USER where possible. This
510     should make multithreaded programs on OSX and *BSD alert the main thread a
511     little faster. (53a07fe)
512   o Make th_base_lock nonrecursive. (9cd5acb)
513
514 New/Changed API Functions:
515   o New event_get_priority() function to return an event's priority (f90e255)
516   o Add a bufferevent_get_priority() function (bd39554)
517   o Add an event_base_loopcontinue() to tell Libevent to rescan for more
518     events right away (7d6aa5e)
519   o Add a new callback to get called on evbuffer_file_segment free
520     (e9f8feb yangacer, 64051b9)
521   o Expose event_base_foreach_event() as a public API. (84fd6d7 Roman
522      Puls, 232055e, ffe1643)
523   o Add an event_remove_timer() to remove timer on an event without
524     deleting it (e3b2e08)
525   o Make bufferevent_set_timeouts(bev, NULL, NULL) have plausible
526     semantics (9dee36b)
527   o Rename event_enable_lock_debuging() to ..._debugging(). (The old name
528     should still work.) (07e132e)
529   o Add missing implementation for event_enable_debug_logging (3b3e21d)
530
531 PORTABLE MONOTONIC TIMERS:
532
533   Libevent 2.1.2 includes internal support for monotonic timers on
534   (nearly) all supported platforms, including Windows, and OSX.  Libevent
535   applications should now be more resilient to jumps forwards or backwards
536   in the system clock.  Also, on Linux systems with epoll, we now
537   optionally support microsecond-level timeouts (whereas epoll only
538   supports millisecond-precision timeouts).
539
540   o Use mach_absolute_time() for monotonic clock support on OSX. (b8fd6f9)
541   o Do not track use_monotonic field when is no monotonic clock (cb653a0)
542   o EVENT_BASE_FLAG_PRECISE_TIMER indicates we want fine timer precision
543     (ddd69d3)
544   o On Linux, use CLOCK_MONOTONIC_COARSE by default (55780a7)
545   o Implement a GetTickCount-based monotonic timer for Windows (d5e1d5a)
546   o Refactor monotonic timer handling into a new type and set of
547     functions; add a gettimeofday-based ratcheting implementation (f5e4eb0)
548   o Add EVENT_PRECISE_TIMER environment var for selecting precise-but-slow
549     timer (a2598ec)
550   o Implement fast/precise monotonic clocks on Windows (2c47045)
551   o Simple unit tests for monotonic timers (630f077)
552   o Improve the monotonic-time unit test: make it check the step size (7428c78)
553   o When PRECISE_TIMERS is set with epoll, use timerfd for microsecond
554     precision (26c7582)
555   o Split out time-related evutil functions into a new evutil_time.c (c419485)
556   o Split out time-related prototypes into time-internal.h (71bca50)
557   o Add evutil_time.obj to Makefile.nmake (0ba0683)
558   o Avoid giving a spurious warning when timerfd support is unavailable
559     (1aaf9f0 Dave Hart)
560   o Make test_evutil_monotonic a little more tolerant (def3b83)
561   o Avoid unused-var warning on systems with clock_gettime but without
562     CLOCK_MONOTONIC_COARSE (9be5468)
563
564EVENT_BASE_ONCE LEAKS:
565   If a callback added by event_base_once() is never invoked, Libevent no
566   longer leaks internal memory.
567
568   o Free dangling event_once objects on event_base_free() (c17dd59)
569   o Add a unit test in which an event is created with event_base_once()
570     but never fires (4343edf)
571
572TESTING SUPPORT, FIXES AND IMPROVEMENTS:
573
574   Libevent now disables by default its unit tests that would touch the
575   network, or that tend to fail on heavily-loaded systems.  To re-enable
576   them, invoke the ./test/regress program with the @all alias.
577
578   o Simplify test.sh code significantly. (9b856fd Ross Lagerwall)
579   o Make all tests that hit the network disabled by default (f2cea87)
580   o Avoid a resource leak on error in http client benchmark (ea92fba)
581   o Update to latest tinytest (911b4f0349377) (ef7c4f7)
582   o Avoid (unlikely) overflow in bench_httpclient.c (5671033)
583   o Shave 700 msec off the persistent_timeout_jump test (21205b8)
584   o Check return value of write() in regress.c (c8009d2)
585   o Make load-dependent monotonic timer tests off-by-default (2b6fe8b)
586   o Add deferred_cb_skew to list of timing-dependent tests (34c8f31)
587   o Avoid test -e; older shs don't have one. (f1bd938)
588   o Fix renegotiation test to work around openssl 1.0.1 bug (c2f3086)
589   o Fix a couple of compile warnings in the unit tests (5a9a014)
590
591MISC:
592   o Change evutil_weakrand_() to avoid platform random() (e86af4b Nicholas
593     Marriott, 3aa4415)
594
595INFRASTRUCTURE (Active-later events):
596   As a simplification and optimization to Libevent's "deferred callback"
597   logic (introduced in 2.0 to avoid callback recursion), Libevent now
598   treats all of its deferrable callback types using the same logic it uses
599   for active events.  Now deferred events no longer cause priority
600   inversion, no longer require special code to cancel them, and so on.
601
602   o Refactor the callback part of an event into its own event_callback
603     type (cba59e5)
604   o Add "active later" event_callbacks to supersede deferred (745a63d)
605   o event_base_assert_ok: check value of event_active_count for
606     correctness (fec8bae)
607   o Replace deferred_cbs with event_callback-based implementation. (ae2b84b)
608   o Replace more deferred_cb names with event_callback (a4079aa)
609   o Give event_base_process_active a single exit path (581b5be)
610   o Restore our priority-inversion-prevention code with deferreds (c0e425a)
611   o Refactor event_persist_closure: raise and extract some common logic
612     (bec22b4)
613   o Remove the unused bits from EVLIST_ALL (9889a3d)
614
615BUILD IMPROVEMENTS:
616 Libevent 2.1.2-alpha modernizes Libevent's use of autotools, and makes
617 numerous other build system. Parallel builds should be faster, and all
618 builds should be quieter.
619
620   o Split long lists in Makefile.am into one-item-per-line (2711cda)
621   o Remove unnecessary code in configure.in. (e65914f Ross Lagerwall)
622   o attempt to support OpenSSL in Makefile.nmake (eba0eb2 Patrick Pelletier)
623   o Use newer syntax for autoconf/automake init (7d60ba8)
624   o Enable silent build rules by default. Override with V=1 (7b18e5c)
625   o Switch to non-recursive makefiles (7092f3b)
626   o Rename subordinate Makefile.ams to include.am (6cdfeeb)
627   o Make quiet build even quieter (371a123)
628   o New --quiet option for event_rpcgen.py (aa59c1e)
629   o Be quiet when making regress.gen.[ch] (607a8ff)
630   o Fix handling of no-python case for nonrecursive make (1e3123d)
631   o We now require automake 1.9 or later. Modernize! (b7f6e89)
632   o Rename configure.in to configure.ac. (b3fea67 Ross Lagerwall)
633   o Use correct openssl libs and includes in pkgconfig file (d70af27)
634   o Use the same CFLAGS for openssl when building unit tests as with
635     libevent (1d9d511)
636
637DOCUMENTATION
638   o Note that make_base_notifiable should not be necessary (26ee5f9)
639   o Be more clear that LEV_OPT_DEFERRED_ACCEPT has tricky prereqs (371efeb)
640   o Add caveat to docs about bufferevent_free() with data in outbuf (6fab9ee)
641   o Make it more clear that NOLOCK means "I promise, no multithreading"
642    (9444524)
643   o Fix a comment in test-fdleak after 077c7e949. (3881d8f Ross Lagerwall)
644   o Make the Makefile.nmake warning slightly less dire (e7bf4c8)
645   o Fix typo : events instead of evets (05f1aca Azat Khuzhin)
646   o Additional comments about OPENSSL_DIR variable, prompted by Dave Hart
647     (6bde2ef Patrick Pelletier)
648
649EVHTTP:
650   o ignore LWS after field-content in headers (370a2c0 Artem Germanov)
651   o Clean up rtrim implementation (aa59d80)
652   o Remove trailing tabs in HTTP headers as well. (ac42519)
653   o Remove internal ws from multiline http headers correctly (c6ff381)
654   o Move evutil_rtrim_lws_ to evutil.c where it belongs (61b93af)
655   o add evhttp_request_get_response_code_line (4f4d0c9 Jay R. Wren)
656   o Use EVUTIL_SOCKET_ERROR() wrapper to save/restore errno in
657     evhttp_connection_fail_ (7afbd60)
658   o preserve errno in evhttp_connection_fail_ for inspection by the
659     callback (36d0ee5 Patrick Pelletier)
660
661BUGFIXES:
662   o Correctly handle running on a system where accept4 doesn't work. (9fbfe9b)
663   o Avoid double-free on error in evbuffer_add_file. Found by
664     coverity. (6a81b1f)
665   o Fix another possible uninitialized read in dns regression tests. Found
666     by coverity. (13525c5)
667   o Add checks for functions in test-ratelim.c; found by Coverity (aa501e1)
668   o Avoid memory leak in test_event_calloc unit test; found by coverity
669     (92817a1)
670   o Fix a shadowed variable in addfile_test_readcb; found by coverity
671     (225344c)
672   o Check return value when using LEV_OPT_DEFERRED_ACCEPT. Found by
673     coverity (6487f63)
674   o Prevent reference leak of bufferevent if getaddrinfo fails. (b757786
675     Joachim Bauch)
676   o Make event_base_getnpriorities work with old "implicit base" code
677     (c46cb9c)
678   o Simplify and correct evutil_open_closeonexec_ (0de587f)
679   o Fix event_dlist definition when sys/queue not included (81b6209
680     Derrick Pallas)
681
682
683
684Changes in version 2.1.1-alpha (4 Apr 2012)
685
686 Libevent 2.1.1-alpha includes a number of new features and performance
687 improvements.  The log below tries to organize them by rough area of
688 effect.  It omits some commits which were pure bugfixes on other commits
689 listed below.  For more detail, see the git changelogs.  For more
690 insight, see the "whatsnew-2.1.txt" document included in the Libevent
691 2.1.1-alpha distribution.
692
693 Performance: Core
694   o Replace several TAILQ users with LIST. LIST can be a little faster than
695     TAILQ for cases where we don't need queue-like behavior. (f9db33d,
696     6494772, d313c29, 974d004)
697   o Disabled code to optimize the case where we reinsert an existing
698     timeout (e47042f, 09cbc3d)
699   o Remove a needless base-notify when rescheduling the first timeout (77a96fd)
700   o Save a needless comparison when removing/adjusting timeouts (dd5189b)
701   o Possible optimization: split event_queue_insert/remove into
702     separate functions. needs testing (efc4dc5)
703   o Make event_count maintenance branchless at the expense of an
704     extra shift. Needs benchmarking (d1cee3b)
705   o In the 2.1 branch, let's try out lazy gettimeofday/clock_gettime
706     comparison (2a83ecc)
707   o Optimization in event_process_active(): ignore maxcb & endtime
708     for highest priority events. (a9866aa Alexander Drozdov)
709   o Bypass event_add when using event_base_once() for a 0-sec timeout (35c5c95)
710   o Remove the eventqueue list and the ev_next pointers. (604569b 066775e)
711
712 Performance: Evbuffers
713   o Roughly 20% speed increase when line-draining a buffer using
714     EVBUFFER_EOL_CRLF (5dde0f0 Mina Naguib)
715   o Try to squeeze a little more speed out of EVBUFFER_EOL_CRLF (7b9d139)
716   o Fix a bug in the improved EOL_CRLF code (d927965)
717   o Remove a needless branch in evbuffer_drain() (d19a326)
718
719 Performance: Linux
720   o Infrastructure for using faster/fewer syscalls when creating
721     sockets (a1c042b)
722   o Minimize syscalls during socket creation in listener.c (7e9e289)
723   o Use a wrapper function to create the notification
724     pipe/socketpair/eventfd (ca76cd9)
725   o Use pipes for telling signals to main thread when possible (a35f396)
726   o Save syscalls when constructing listener sockets for evhttp (af6c9d8)
727   o Save some syscalls when creating evdns sockets (713e570)
728   o Save some syscalls when constructing a socket for a bufferevent (33fca62)
729   o Prefer epoll_create1 on Linuxen that have it (bac906c)
730
731 Performance: Epoll backend
732   o Use current event set rather than current pending change when
733     deciding whether to no-op a del (04ba27e Mike Smellie)
734   o Replace big chain of if/thens in epoll.c with a table lookup (8c83eb6)
735   o Clean up error handling in epoll_apply_one_change() a little (2d55a19)
736
737 Performance: Evport backend
738   o evport: use evmap_io to track fdinfo status. Should save time and
739     RAM. (4687ce4)
740   o evport: Remove a linear search over recent events when
741     reactivating them (0f77efe)
742   o evport: Use portev_user to remember fdinfo struct (276ec0e)
743   o evport: don't scan more events in ed_pending than needed (849a5cf)
744   o evport: Remove artificial low limit on max events per getn call (c04d927)
745   o Reenable main/many_events_slow_add for evport in 2.1 (e903db3)
746
747 Performance: Windows
748   o Use GetSystemTimeAsFileTime to implement gettimeofday on
749     win32. It's faster and more accurate than our old
750     approach. (b8b8aa5)
751
752 New functions and features: debugging
753   o Add event_enable_debug_logging() to control use of debug logs (e30a82f)
754
755 New functions and features: core
756   o Add event_config function to limit time/callbacks between calls
757     to dispatch (fd4de1e, 9fa56bd, a37a0c0, 3c63edd)
758   o New EVLOOP_NO_EXIT_ON_EMPTY option to keep looping even when no
759     events are pending (084e68f)
760   o Add event_base_get_npriorities() function. (ee3a4ee Alexander Drozdov)
761   o Make evbase_priority_init() and evbase_get_npriorities()
762     threadsafe (3c55b5e)
763   o New event_base_update_cache_time() to set cached_tv to current
764     time (212533e Abel Mathew)
765   o Add event_self_cbarg() to be used in conjunction with
766     event_new(). (ed36e6a Ross Lagerwall, fa931bb, 09a1906, 1338e6c,
767     33e43ef)
768   o Add a new libevent_global_shutdown() to free all globals before
769     exiting. (041ca00 Mark Ellzey, f98c158, 15296d0, 55e991b)
770   o Use getifaddrs to detect our interfaces if possible (7085a45)
771   o Add event_base_get_running_event() to get the event* whose cb we
772     are in (c5732fd, 13dad99)
773
774 New functions and features: building
775   o Implement --enable-gcc-hardening configure option (7550267 Sebastian Hahn)
776
777 New functions and features: evbuffers
778   o Add evbuffer_add_file_segment() so one fd can be used efficiently
779     in more than one evbuffer_add_file at a time (e72afae, c2d9884,
780     3f405d2, 0aad014)
781   o Fix windows file segment mappings (8254de7)
782   o Allow evbuffer_ptr_set to yield a point just after the end of the
783     buffer. (e6fe1da)
784   o Allow evbuffer_ptr to point to position 0 in an empty evbuffer
785     (7aeb2fd Nir Soffer)
786   o Set the special "not found" evbuffer_ptr consistently. (e3e97ae Nir Soffer)
787   o support adding buffers to other buffers non-destructively
788     (9d7368a Joachim Bauch)
789   o prevent nested multicast references, reworked locking (26041a8
790     Joachim Bauch)
791   o New EVBUFFER_EOL_NUL to read NUL-terminated strings from an
792     evbuffer (d7a8b36 Andrea Montefusco, 54142c9)
793   o Make evbuffer_file_segment_types adaptable (c6bbbf1)
794   o Added evbuffer_add_iovec and unit tests. (aaec5ac Mark Ellzey, 27b5398)
795   o Add evbuffer_copyout_from to copy data from the middle of a
796     buffer (27e2225)
797
798 New functions and features: bufferevents
799   o Allow users to set allow_dirty_shutdown (099d27d Catalin Patulea)
800   o Tweak allow_dirty_shutdown documentation (a44cd2b)
801   o Fix two issues in the allow_dirty_shutdown code. (f3b89de)
802   o Add a bufferevent_getcb() to find a bufferevent's current
803     callbacks (a650394)
804   o bufferevent: Add functions to set/get max_single_read/write
805     values. (998c813 Alexander Drozdov)
806   o bev_ssl: Be more specific in event callbacks. evhttp in particular gets
807     confused without at least one of BEV_EVENT_{READING|WRITING}. (f7eb69a
808     Catalin Patulea)
809
810 New functions and features: evconnlisteners
811   o Support TCP_DEFER_ACCEPT sockopts for listeners (5880e4a Mark Ellzey,
812     a270728)
813   o Add another caveat to the TCP_DEFER_ACCEPT documentation (a270728)
814   o Allow evconnlistener to be created in disabled state. (9593a33
815     Alexander Drozdov)
816   o The LEV_OPT_CLOSE_ON_EXEC flag now applies to accepted listener
817     sockets too (4970329)
818
819 Evhttp:
820   o Add new evhttp_{connection_}set_timeout_tv() functions to set
821     finger-grained http timeouts (6350e6c Constantine Verutin)
822   o Performance tweak to evhttp_parse_request_line. (aee1a97 Mark Ellzey)
823   o Add missing break to evhttp_parse_request_line (0fcc536)
824   o Add evhttp callback for bufferevent creation; this lets evhttp
825     support SSL. (8d3a850)
826   o Remove calls to deprecated bufferevent functions from evhttp.c (4d63758)
827   o evhttp: Add evhttp_foreach_bound_socket. (a2c48e3 Samy Al Bahra)
828
829 Build improvements:
830   o Add AC_USE_SYSTEM_EXTENSIONS to configure.in. Requires follow on
831     patches for correctness and robustness. (1fa7dbe Kevin Bowling)
832   o Filter '# define' statements from autoconf and generate
833     event-private.h (321b558 Kevin Bowling)
834   o Remove internal usage of _GNU_SOURCE (3b26541 Kevin Bowling)
835   o Eliminate a couple more manual internal _GNU_SOURCE defines (c51ef93
836     Kevin Bowling)
837   o Add AC_GNU_SOURCE to the fallback case. (ea8fa4c Kevin Bowling)
838   o Use a Configuration Header Template for evconfig-private.h (868f888
839     Kevin Bowling)
840   o Fix a comment warning and add evconfig-private.h to .gitignore
841     (f6d66bc Kevin Bowling)
842   o Include evconfig-private.h in internal files for great good. (0915ca0
843     Kevin Bowling)
844   o Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5)
845     (ad03952 Kevin Bowling)
846   o Prefer the ./configure evconfig-private.h in MinGW, just in
847     case. (f964b72 Kevin Bowling)
848   o Shell hack for weird mkdir -p commands (fd7b5a8 Kevin Bowling)
849   o Add evconfig-private to remaining files (ded0a09 Kevin Bowling)
850   o Allow use of --enable-silent-rules for quieter compilation with
851     automake 1.11 (f1f8514 Dave Hart)
852   o Use "_WIN32", not WIN32: it's standard and we don't need to fake it
853     (9f560b)
854   o In configure, test for _WIN32 not WIN32. (85078b1 Peter Rosin)
855   o Do not define WIN32 in Makefile.nmake (d41f3ea Peter Rosin)
856   o Provide the autoconf m4 macros for the new OpenSSL via pkg-config
857     stuff. (674dc3d Harlan Stenn)
858   o Use pkg-config (if available) to handle OpenSSL. (1c63860 Harlan Stenn)
859   o We need AM_CPPFLAGS when compiling bufferevent_openssl.c (6d2613b
860     Harlan Stenn)
861   o Fix OSX build: $(OPENSSL_INCS) needs to be after
862     $(AM_CPPFLAGS). (46f1769 Zack Weinberg)
863   o Make gcc warnings on by default, and --enable-gcc-warnings only add
864     -Werror (d46517e Sebastian Hahn)
865   o Split up extra-long AC_CHECK_FUNCS/HEADERS lines in configure.in (88a30ad)
866   o Move libevent 1.x headers to include/, to put all public headers in
867     one place. (bbea8d6)
868   o Put #ifdef around some files to support alternate build
869     systems. (76d4c92 Ross Lagerwall)
870   o Also make win32select.c conditional for IDE users (bf2c5a7)
871
872 Debugging:
873   o Add a magic number to debug_locks to better catch lock-coding
874     errors. (b4a29c0 Dave Hart)
875   o munge the debug_lock signature before freeing it: it might help us
876     catch use-after-free (f28084d)
877   o Added --enable-event-debugging in configure (bc7b4e4, a9c2c9a Mark Ellzey)
878   o Debug addition for printing usec on TIMEOUT debugging. (ac43ce0 Mark Ellzey)
879   o Added usec debug in another area for debug (3baab0d Mark Ellzey)
880   o added timeout debug logs to include event ptr. (4b7d298 Mark Ellzey)
881   o more event dbg updates (6727543 Mark Ellzey)
882   o Clarify event_enable_debug_logging a little (6207826)
883   o Make --enable-verbose-debug option match its help text (10c3450)
884   o Add argument checks to some memory functions in `event.c'. (c8953d1
885     Mansour Moufid)
886
887 Testing:
888   o More abstraction in test.sh (cd74c4e)
889   o Add failing test for evbuffer_search_range. (8e26154 Nir Soffer)
890   o Tweaks to return types with end-of-buf ptrs (9ab8ab8)
891   o Add an (internal) usleep function for use by unit tests (f25d9d3)
892   o Synchronize with upstream tinytest (6c81be7)
893   o Make test-changelist faster (7622d26)
894   o Reduce the timeout in the main/fork test. (ab14f7c)
895   o New evhttp function to adjust initial retry timeout (350a3c4)
896   o Make regression tests run over 3x faster. (67a1763)
897   o Use test_timeval_diff_eq more consistently (b77b43f)
898   o Allow more slop in deferred_cb_skew test; freebsd needs it (b9f7e5f)
899   o When including an -internal.h header outside the main tree, do so
900     early (95e2455)
901   o Add a new test: test-fdleak which tests for fd leaks by creating many
902     sockets. (2ef9278 Ross Lagerwall, f7af194, 1c4288f, etc)
903   o Add a unit test for event_base_dump_events() (7afe48a, 8d08cce)
904   o Test more bufferevent_ratelim features (c24f91a)
905
906 Documentation:
907   o Improve evbuffer_ptr documentation (261ba63)
908   o added comments to describe refcounting of multicast chains (ba24f61
909     Joachim Bauch)
910   o Add doxygen for event_base_dump_events (cad5753)
911
912 OSX:
913   o Use "unlimited select" on OSX so that we can have more than
914     FD_SETSIZE fds (1fb5cc6)
915
916 KQueue:
917   o Use SIG_IGN instead of a do-nothing handler for signal events with
918     kqueue (148458e Zack Weinberg)
919
920 evprc:
921   o event_rpcgen.py now prints status information to stdout and errors to
922     stderr. (ffb0ba0 Ross Lagerwall)
923
924 Code improvement and refactoring:
925   o Make event_reinit() more robust and maintainable (272033e)
926   o Restore fast-path event_reinit() for slower backends (2c4b5de)
927   o Check changelist as part of checking representational integrity (39b3f38)
928   o Fix a compile warning in event_reinit (e4a56ed Sebastian Hahn)
929   o Refactor the functions that run over every event. (c89b4e6)
930   o Remove the last vestiges of _EVENT_USE_EVENTLIST (a3cec90)
931   o Make event-config.h depend on Makefile.am (2958a5c)
932
933 Build fixes:
934   o Don't do clang version detection when disabling some flags (083296b
935     Sebastian Hahn)
936
937 C standards conformance:
938   o Check for NULL return on win32 mm_calloc, and set ENOMEM. (af7ba69)
939   o Convert event-config.h macros to avoid reserved identifiers (68120d9)
940   o Generate event-config.h using the correct macros. (f82c57e)
941   o Convert include-guard macro convention to avoid reserved identifiers
942     (3f8c7cd)
943   o Make event_rpcgen.py output conform to identifier conventions (372bff1)
944   o Stop referring to an obsolete include guard in bench_http.h (5c0f7e0)
945   o Make the generated event-config.h use correct include guards (639383a)
946   o Fix all identifiers with names beginning with underscore. (cb9da0b)
947   o Make event_rpcgen.py output conform to identifier conventions, more
948     (bcefd24)
949   o Fix some problems introduced by automated identifier cleanup script
950     (c963534)
951   o Have all visible internal function names end with an underscore. (8ac3c4c)
952   o Apply the naming convention to our EVUTIL_IS* functions (c7848fa)
953   o Clean up lingering _identifiers. (946b584)
954   o Fix doxygen to use new macro conventions (da455e9)
955
956 Bugfixes:
957   o Do not use system EAI/AI values if we are not using the system
958     getaddrinfo. (7bcac07)
959
960 Sample Code:
961   o Fix up sample/event-test.c to use newer interfaces and make it
962     actually work. (19bab4f Ross Lagerwall)
963   o On Unix, remove event.fifo left by sample/event-test.c. (c0dacd2 Ross
964     Lagerwall)
965   o Rename event-test.c to event-read-fifo.c. (a5b370a Ross Lagerwall)
966   o event-read-fifo: Use EV_PERSIST appropriately (24dab0b)
967
968
969
970
971